setvirtualenvproject不会发生目录更改

Ros*_*sGK 3 python virtualenv virtualenvwrapper

我正在拥抱VirtualEnvWrapper-就像我看到的很多。但是,当我尝试开始时,尝试与虚拟环境建立项目目录关联时没有看到预期的行为。

我已经安装了virtualenv和-wrapper。我可以创建环境,并且“ workon”可以很好地列出它们。我可以停用并愉快地管理它们。因此,所有功能似乎都起作用。我阅读了有关项目mgmt的文档。(也是一个很好的视频教程,并且在10:39解释了所需的proj关联行为)

当我尝试将工作目录与env关联时,它会接受我的cmds,但是当我“工作”该项目时,它不会将我放入指定的工作目录中。

例如,我有一个工作区〜/ Ross_code(并且我在.bashrc中将其设置为$ PROJECT_HOME)。里面有一个现有的项目文件夹〜/ Ross_code / superproj

所以现在我用

mkvirtualenv superp
Run Code Online (Sandbox Code Playgroud)

然后,转到现有项目目录,并将其与env关联:

cd ~/Ross_code/superproj 
setvirtualenvproject
Setting project for superp to /Users/ross/Ross_code/superproj
Run Code Online (Sandbox Code Playgroud)

然后我用“ deactivate”退出虚拟环境,并用

workon superp
Run Code Online (Sandbox Code Playgroud)

但是当前的工作目录仍然是我的〜/文件夹。
我检查了.project文件,该文件似乎已通过调用setvirtualenvproject进行了正确设置:

cdvirtualenv
more .project
/Users/ross/Ross_Code/superproj
Run Code Online (Sandbox Code Playgroud)

但是叫“ workon”永远不会让我陷入预期的位置。我以为env和项目目录可能需要同名,但这也没有任何区别。

知道为什么这么有吸引力的项目关联功能对我不起作用吗?

罗斯

稍后-更多信息:我还尝试使用mkproject命令,该命令应在$ PROJECT_HOME区域中为我的代码创建一个目录,并同时创建virtualenv并将它们彼此关联。

呼唤

mkproject junkproj
Run Code Online (Sandbox Code Playgroud)

实际上确实很好地创建了项目目录,并将我粘贴到virtualenv中,将cd粘贴到junkproj目录中。但是,当我取消激活然后再次“ workon junkproj”时,我仍然留在〜/目录中,而不是进入$ PROJECT_HOME中的项目目录

:(

Pau*_*ipp 5

这里的问题是,virtualenvwrapper的较新版本(这使我从ubuntu 14.04升级到16.04)使setvirtualenvproject参数使用略有不同的协议:

setvirtualenvproject [virtualenv_path project_path]
Run Code Online (Sandbox Code Playgroud)

为了在任何虚拟环境中建立所需的关联,请在项目文件夹和virtualenv中并使用:

setvirtualenvproject $VIRTUAL_ENV .
Run Code Online (Sandbox Code Playgroud)

点号代表当前目录-或您可以使用要workon转到的目录路径。完成此操作后,workon将切换到所需的文件夹,并且cdproject将按预期工作。

如果使用旧协议,则.project项目文件夹中将有一个文件-您可以将其移动到$ VIRTUAL_ENV文件夹中,而无需使用新协议调用命令进行关联。该文件仅包含您要与virtualenvwrapper快捷方式命令(如workon和)关联的项目目录cdproject