2010-04-15 308 views
4

我有一個Fabric任務需要訪問我的Django項目的設置。在Windows的fabfile中使用activate_this.py激活python虛擬環境

在Windows上,我無法將Fabric安裝到項目的virtualenv中(與Paramiko + pycrypto deps有關的問題)。不過,我可以在我的系統級站點包中安裝Fabric,沒問題。

我已經安裝的Django到項目的virtualenv中,我能夠使用所有的「>蟒蛇manage.py」當我啓動的「VIRTUALENV \腳本\ activate.bat」腳本命令的virtualenv容易。

我的項目中有一個結構任務文件(fabfile.py),它提供了安裝,測試,部署等任務。我的fabfile中的一些任務需要通過「from django」來訪問我的django項目的設置.conf導入設置「。

由於我唯一可用的Fabric安裝位於我的系統範圍的站點包中,因此我需要激活我的fabfile中的virtualenv,以便django變得可用。爲此,我使用項目virtualenv的「activate_this」模塊來訪問項目設置等。在執行activate_this.py之前和之後使用「print sys.path」,我可以告訴python路徑變化指向項目的virtualenv。但是,我仍然無法導入django.conf.settings。

我已經能夠在* nix(Ubuntu和CentOS)和Cygwin上成功完成此操作。你在Windows上使用這個設置/工作流程嗎?如果是這樣你能幫我弄清楚爲什麼這不會在Windows上工作,或提供任何提示和技巧來解決這個問題?

感謝和歡呼。


REF:

本地開發環境:

  • 的Python 2.5.4
  • VIRTUALENV 1.4.6
  • 面料0.9.0
  • 皮普0.6.1
  • Django 1.1.1
  • Windows XP(SP3)

回答

6

一些挖後,我發現,這是與activate_this.py腳本的問題。在當前狀態下,virtualenv < = 1.4.6,此腳本假定站點包目錄的路徑對於所有平臺都是相同的。但是,在* nix平臺和Windows之間,網站包目錄的路徑不同。

在這種情況下,activate_this。PY腳本添加的* nix風格的路徑:

VIRTUALENV_BASE/lib中/的python2.5 /站點包/

到Python之路,而不是Windows具體路徑:

VIRTUALENV_BASE \ LIB \定點packages \

我在virtualenv問題跟蹤器中創建了一個問題,概述了問題和解決方案。如果你有興趣,你可以在這裏查看這個問題:http://bitbucket.org/ianb/virtualenv/issue/31/windows-activate_this-assumes-nix-path-to-site

希望修補程序可以在virtualenv的upcomming版本中使用。


如果你需要爲這個問題的修復,現在,在virtualenv中包尚未被修補,如下圖所示,你可以「修復」自己activate_this.py。

編輯您的VIRTUALENV \ Scripts \ activate_this.py文件。更改線路(17):

site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages') 

if sys.platform == 'win32': 
    site_packages = os.path.join(base, 'Lib', 'site-packages') 
else: 
    site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages') 

有了這個地方,你activate_this.py腳本將首先檢查它運行在哪個平臺上,然後定製路徑網站-packages目錄以適應。

享受!

+0

現在問題已解決。 – 2012-07-20 05:16:54

2

您必須從fab文件中執行activate this。本書雖然是」我沒有測試過,我相信下面應該工作:

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

是的,這正是我在我的fabfile中做的 - 到目前爲止,它在Windows上不適用於我。如果您可以在Windows中做一個快速測試,並且讓我知道如何爲您服務,我將不勝感激。 – 2010-04-15 14:28:50

相關問題