我拥抱VirtualEnvWrapper - 就像我看到的那样。然而,当我尝试开始时,我没有看到我在尝试与虚拟环境建立项目目录关联时所期望的行为。
我已经安装了virtualenv和-wrapper。我可以创建envs和" workon"列出他们没问题。我可以快乐地停用它们。所以看起来都很实用。我阅读了有关project mgmt的文档。 (另外a good video tutorial,以及在10:39解释的所需的项目关联行为
当我尝试将工作目录与env关联时,它接受我的cmds很好,但是当我" workon"该项目,它没有把我放到我指定的工作目录。
e.g。我有一个工作区〜/ Ross_code(我已经将我的.bashrc设置为$ PROJECT_HOME)。在现有的项目文件夹〜/ Ross_code / superproj
中所以现在我用
创建一个envmkvirtualenv superp
然后我转到我现有的项目目录并将其与env:
联系起来cd ~/Ross_code/superproj
setvirtualenvproject
Setting project for superp to /Users/ross/Ross_code/superproj
然后我退出虚拟环境,使用"取消激活"并通过
重新激活workon superp
但是现在的工作目录仍然是我的〜/文件夹 我检查了.project文件,该文件似乎是通过调用setvirtualenvproject正确设置的:
cdvirtualenv
more .project
/Users/ross/Ross_Code/superproj
但是打电话" workon"永远不会让我进入预期的位置。我想也许env和项目目录需要具有相同的名称,但这也没有任何区别。
知道为什么非常有吸引力的项目协会能力对我不起作用?
-Ross。
稍后 - 更多信息: 我还尝试使用mkproject命令,该命令应该在$ PROJECT_HOME区域为我的代码创建一个目录,并同时创建virtualenv并将它们相互关联。
致电
mkproject junkproj
实际上确实很好地创建了项目目录,并将我引入了virtualenv,然后进入junkproj目录。但是当我停用时,然后" workon junkproj"再次,我仍然留在我的〜/目录中,而不是进入$ PROJECT_HOME的项目目录
:(
答案 0 :(得分:4)
这里的问题是virtualenvwrapper的较新版本(这让我从ubuntu 14.04升级到16.04)对setvirtualenvproject参数使用了略有不同的协议:
setvirtualenvproject [virtualenv_path project_path]
为了在任何虚拟环境中建立您想要的关联,请在项目文件夹和virtualenv中使用:
setvirtualenvproject $VIRTUAL_ENV .
该点用于当前目录 - 或者您可以使用您希望workon
带您到达的目录的路径。执行此操作后,workon
会切换到您想要的文件夹,cdproject
将按预期工作。
如果您使用旧协议,则项目文件夹中将包含.project
文件 - 您可以将其移至$ VIRTUAL_ENV文件夹,而不是使用新协议调用该命令进行关联。该文件只包含要与virtualenvwrapper快捷命令关联的项目目录,如workon
和cdproject
。
答案 1 :(得分:1)
workon
不会自动将目录更改为项目或环境目录。
您可以使用postactivate
脚本执行此操作 - virtualenvwrapper tips and tricks section的后半部分有一个非常快速的操作方法。