gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 02:14:17 26 4
gpt4 key购买 nike

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

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

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

我的项目中有一个 fabric 任务文件 (fabfile.py),它提供了设置、测试、部署等任务。我的 fabfile 中的一些任务需要通过“from 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 上不起作用,或者提供任何提示和技巧来解决这个问题吗?

谢谢和干杯。


引用:

本地开发环境:

  • python 2.5.4
  • 虚拟环境 1.4.6
  • 结构 0.9.0
  • 点子 0.6.1
  • Django 1.1.1
  • Windows XP (SP3)

最佳答案

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

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

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

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

VIRTUALENV_BASE\Lib\site-packages\

我在 virtualenv 问题跟踪器中创建了一个问题,其中概述了问题和解决方案。如果您有兴趣,可以在这里查看问题:http://bitbucket.org/ianb/virtualenv/issue/31/windows-activate_this-assumes-nix-path-to-site

希望该修复程序将在即将发布的 virtualenv 版本中提供。


如果您现在需要修复此问题,并且 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 脚本将首先检查它在哪个平台上运行,然后调整站点包目录的路径以适合。

尽情享受吧!

关于python - 在 Windows 上的 fabfile 中使用 activate_this.py 激活 python 虚拟环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2643612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com