2010-04-15 309 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

相关问题