2012-07-20 24 views
9

對於激活,有一個腳本可以使用execfile('C:/path/to/virtualev/Scripts/activate_this.py', dict(__file__='C:/path/to/virtualev/Scripts/activate_this.py'))從已經運行的python中間件激活virtualenv。但是由於我仍然可以從當前的python腳本導入不在virtualenv中的軟件包,所以我對它的工作原理感到困惑。
對於停用,根本沒有python腳本。
我該怎麼辦?如何從python代碼激活/停用virtualenv?

+0

我不明白你的意思是停用。如果你不想要virtualenv ..只是刪除整個文件夾。當我們在編輯器中編寫程序(比如eclipse)時,所有這些都是 – Surya 2012-07-20 05:52:44

+0

..其中python路徑默認不是virtualenv ..所以,你可以使用不在virtualenv中的軟件包。這就是它 – Surya 2012-07-20 05:53:55

+1

@Surya當停用virtualenv時,這意味着你正在返回主python中間件。 – 2012-07-21 08:44:20

回答

6

part of the VirtualEnv homepage

您必須使用自定義Python解釋器來安裝庫。但是要使用庫,您只需確保路徑是正確的。 A 腳本可用於更正路徑。您可以設置環境 這樣的:

activate_this = '/path/to/env/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 
+0

什麼是Python 3相當於此? – Pieter 2014-11-11 11:16:32

+2

@Pieter http://stackoverflow.com/questions/436198/what-is-an-alternative-to-execfile-in-python-3-0 – satoru 2015-08-27 03:01:18

-3

這聽起來很糟糕。您正試圖在此腳本中修改腳本的環境。請解釋爲什麼?

難道你不能分層嗎?使用一個腳本在不同的virtualenvs中運行不同的腳本。

+1

我正在開發一個像tox這樣的測試運行器(只是方法非常不同,我不是在重新發明輪子),它使用不同的依賴和python interpeters在不同的虛擬環境下運行測試套件。因此,我必須有一個編程方式來激活和禁用virtualenvs。 – 2012-07-21 08:47:59

-4

在命令行,如果你想給的virtualenv之外運行的程​​序輸入單詞「停用」

+1

來自Python代碼。不是從命令行。 – 2013-09-07 10:55:36

0

,只是運行系統的Python可執行文件(例如/usr/bin/python)而不是virtualenv中的一個。