virtualenvwrapper:`workon`何时更改为项目目录?

时间:2016-12-10 20:36:29

标签: python virtualenv virtualenvwrapper virtual-environment

我使用virtualenvwrapper来管理我的环境。我使用-a <path-to-project>参数创建项目并且未设置PROJECT_HOME,因为我的项目不共享共同路径。 VIRTUALENVWRAPPER_WORKON_CD设置为1,虚拟环境中存在有效的.project文件。

当我使用workon命令时,它只将工作目录更改为项目路径有时,而在其他时候,目录保持不变,尽管环境是正确激活。

那么目录何时以及如何通过workon发生变化?我有什么必须做的事情/设置让它发挥作用吗?

2 个答案:

答案 0 :(得分:2)

我有一个小解决方案,虽然有点hacky

  1. 转到此变量$VIRTUALENVWRAPPER_HOOK_DIR指向的文件夹。您可能需要在虚拟环境中查看该变量,但通常它与$WORKON_HOME具有相同的值
  2. 在此文件夹中,您应该看到一个名为postactivate
  3. 的脚本
  4. 将此添加为脚本中的最后一行:cdproject
  5. 现在这样做是每次键入workon <project_name>时,此脚本将在激活虚拟环境后运行,而您正在使用的目录将切换到该项目的目录。

    有关更多生命周期的挂钩,请参阅here

    注意

    我没有对此进行全面测试,无论项目是如何创建的,都确保无效,但为了确保其有效,我建议使用mkvirtualenv -a <env_name>创建虚拟环境,或者环境是否存在并激活环境,转到它的项目文件夹并运行setvirtualenvproject现在下次尝试执行workon ...时,脚本将启动并转到项目文件夹< / p>

    附录

    由于这是一个shell脚本,你可以做一些奇特的调整而不仅仅是那一行。例如,如果激活的项目具有某种模式或某组项目的一部分,您可能只想执行某些操作。查看一些$VIRTUALENVWRAPPER_*变量以查看您可以获得的其他有用信息

答案 1 :(得分:1)

setvirtualenvproject现在称为setprojectdir。要使用当前目录,请写setprojectdir .