使用setvirtualenvproject不会发生目录更改

时间:2015-01-19 20:00:35

标签: python virtualenv virtualenvwrapper

我拥抱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

所以现在我用

创建一个env
mkvirtualenv 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的项目目录

:(

2 个答案:

答案 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快捷命令关联的项目目录,如workoncdproject

答案 1 :(得分:1)

workon不会自动将目录更改为项目或环境目录。 您可以使用postactivate脚本执行此操作 - virtualenvwrapper tips and tricks section的后半部分有一个非常快速的操作方法。