当前位置:  开发笔记 > 编程语言 > 正文

在Windows上的fabfile中使用activate_this.py激活python虚拟环境

如何解决《在Windows上的fabfile中使用activate_this.py激活python虚拟环境》经验,为你挑选了1个好方法。

我有一个Fabric任务需要访问我的Django项目的设置.

在Windows上,我无法将Fabric安装到项目的virtualenv中(Paramiko + pycrypto deps的问题).但是,我能够在我的系统范围的站点包中安装Fabric,没问题.

我已经将Django安装到项目的virtualenv中,当我使用"VIRTUALENV\Scripts\activate.bat"脚本激活virtualenv时,我可以轻松地使用所有"> python manage.py"命令.

我的项目中有一个结构任务文件(fabfile.py),它提供设置,测试,部署等任务.我的fabfile中的一些任务需要通过"来自django.conf导入设置来访问我的django项目的设置".

由于我唯一可用的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:

http://virtualenv.openplans.org/#id9 | 使用没有bin/python的Virtualenv

本地开发环境:

Python 2.5.4

Virtualenv 1.4.6

面料0.9.0

点0.6.1

Django 1.1.1

Windows XP(SP3)

Rudy Lattae.. 6

经过一番挖掘后,我发现这是activate_this.py脚本的一个问题.在当前状态virtualenv <= 1.4.6中,此脚本假定site-packages目录的路径对于所有平台都是相同的.但是,site-packages目录的路径在*nix之类的平台和Windows之间有所不同.

在这种情况下,activate_this.py脚本会添加*nix样式路径:

VIRTUALENV_BASE/lib中/的python2.5/site-packages中/

到python路径而不是Windows特定路径:

VIRTUALENV_BASE\LIB \站点包\

我在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脚本将首先检查它正在运行的平台,然后定制site-packages目录的路径以适应.

请享用!



1> Rudy Lattae..:

经过一番挖掘后,我发现这是activate_this.py脚本的一个问题.在当前状态virtualenv <= 1.4.6中,此脚本假定site-packages目录的路径对于所有平台都是相同的.但是,site-packages目录的路径在*nix之类的平台和Windows之间有所不同.

在这种情况下,activate_this.py脚本会添加*nix样式路径:

VIRTUALENV_BASE/lib中/的python2.5/site-packages中/

到python路径而不是Windows特定路径:

VIRTUALENV_BASE\LIB \站点包\

我在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脚本将首先检查它正在运行的平台,然后定制site-packages目录的路径以适应.

请享用!

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有