2

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

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

那么目录更改槽何时以及如何workon发生?我必须做些什么/设置它才能工作吗?

4

2 回答 2

3

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

  1. 转到此变量$VIRTUALENVWRAPPER_HOOK_DIR指向的文件夹。您可能需要在虚拟环境中才能看到该变量,但通常它的值与$WORKON_HOME
  2. 在此文件夹中,您应该看到一个名为postactivate
  3. 将此添加为脚本的最后一行:cdproject

现在这样做是每次你输入workon <project_name>,这个脚本会在虚拟环境被激活后运行,你工作的目录会切换到那个项目的目录。

有关更多生命周期挂钩,请参见此处

笔记

无论项目是如何创建的,我都没有对此进行全面测试以确保它可以正常工作,但为了确保它可以正常工作,我建议创建虚拟环境,mkvirtualenv -a <env_name>或者如果环境存在并且环境已激活,请转到它的项目文件夹并运行setvirtualenvproject现在下次您尝试执行此操作workon ...时,该脚本将启动并带您进入您的项目文件夹。

附录

因为这是一个 shell 脚本,你可以做一些花哨的调整,而不仅仅是那一行。例如,您可能只想在激活的项目具有特定模式或特定项目组的一部分时才执行某些操作。检查一些$VIRTUALENVWRAPPER_*变量以查看您可以获得哪些其他有用信息

于 2017-09-26T22:08:28.133 回答
1

现在调用 setvirtualenvproject setprojectdir。使用当前目录写setprojectdir .

于 2020-05-10T07:14:16.110 回答