2017-06-09 86 views
0

是否有可能通過外部工具訪問已經在windows中運行的virtualenv?我需要通過執行django運行實例的python manage.py dosometing來運行cron。對於這我想我會設置Windows任務,將執行類似cmd.exe C:\django\manage.py dosometing,但我不明白如何做到這一點,如果django運行在virtualenv是否有可能訪問Windows中已經運行的virtualenv

+0

目前還不清楚你在問什麼。 virtualenv不是運行的,它只是設置環境變量和路徑的一種方式。 –

回答

2

是的,你可以。 virtualenv不像虛擬機,它不是運行。 virtualenv只是一個設置,你可以在一臺機器上安裝多個python。每個virtualenv都位於一個單獨的目錄中,因此你可以安裝不同的庫,不同版本的python等等。當你激活virtualenv時,你只需設置一些環境變量,如PATH,它告訴python程序使用哪些python可執行文件和庫。

所以當人們說'Django在virtualenv中運行'時,他們只是表示django正在運行..並且有一個virtualenv設置來控制Django使用哪個python安裝。

如果在virtualenv中的文檔看這裏:https://virtualenv.pypa.io/en/stable/userguide/ ...

它會告訴你,你的激活腳本位於:

\path\to\env\Scripts\activate 

\path\to\env應的實際位置來代替你的virtualenv中。

因此,如果您在命令窗口中運行,請首先運行激活腳本,然後您的所有以下命令將位於virtualenv中。如果你從調度程序等運行,最簡單的方法是創建一個首先運行激活腳本的批處理文件,然後創建django命令。這可確保您始終以正確的virtualenv運行。

如果你真的只有一個Python安裝,那麼技術上的virtualenv是沒有必要的..在那種情況下,你可以編輯Windows的環境變量如下:

VIRTUAL_ENV="/path/to/your/virtualenv" 

然後還,追加到你的Path的結尾是你python和python腳本目錄的路徑。在我的系統上這些是:

C:\Python27\Scripts;C:\python27\; 

..並確保您的路徑中沒有其他python目錄。

如果打開PowerShell窗口並運行env,它會告訴你你的環境變量的當前設置。如果你這樣做,運行activate(在你的virtualenv目錄),然後再次運行env,兩者比較Path(和其他變量)..然後你就能夠輕鬆地看到activate做你的環境,你然後可以將其添加到您的Windows配置中。

然後,當你運行python myprogram.py這將是使用的virtualenv無需激活。

+0

很抱歉,我可以在哪裏編輯VIRTUAL_ENV和PATH變量? –

+0

我目前在Windows 7上,在其他版本中可能會有所不同。但進入'控制面板','系統'..然後點擊'高級系統設置',然後點擊'環境變量'。或者,至少在Windows 7中,如果您在開始菜單的搜索框中輸入'environment',則會出現設置環境變量的選項。 –

+0

這裏只有PATH在這裏用C:\ Python \ Scripts; C:\ Python的。嘗試像這樣https://www.dropbox.com/s/ek05zeqn55fey20/Screenshot%202017-06-09%2022.04.49.png?dl=0並且沒有激活,但是沒有運氣 –

相關問題