Virtualenv和virtualenvwrapper似乎不起作用

时间:2016-07-21 08:57:08

标签: virtualenv virtualenvwrapper virtualenv-commands

几个月前,我安装了virtualenvvirtualenvwrapperpip,创建了一些虚拟环境并成功使用了Django。

今天回到我的项目后,我无法使用任何这些命令。例如:

  

/> lsvirtualenv

返回:

  

/>

此外:

  

/> workon

也会返回:

  

/>

这可能是什么原因?文件夹.virtualenv位于/users/myUser/documents/projects/.virtualenvs,其内容为:

get_env_details
postactivate
postmkproject
postrmvirtualenv
predeactivate
premkvirtualenv
initialize
postdeactivate
postmkvirtualenv
preactivate
premkproject
prermvirtualenv

我错过了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

这些命令由脚本virtualenvwrapper.sh生成。您必须获取该文件才能获取命令。

试试这个:

find / -name "virtualenvwrapper.sh" 2>/dev/null

它应该找到并返回文件路径。在我的系统上是:

/usr/share/virtualenvwrapper/virtualenvwrapper.sh

所以你可以这样做:

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

现在您应该拥有这些命令。可能每次启动系统时,您都希望在没有virtualenvwrapper.sh的情况下获取这些命令。

将该行添加到.bashrc(或.bash_profile.profile),以及另外两行

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Projects
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

之后创建目录Projects(您可以随意调用它并随意放置):

mkdir $HOME/Projects

下次启动后,您应该拥有所有命令和新的环境变量。当你这样做时:

mkproject foo

将创建新目录foo:

.virtualenvs/foo

Projects/foo

第一个是您的虚拟环境,第二个是您的项目所在的位置。使用workon foo可以激活它,使用cdvirtualenvcdproject可以在它们之间切换。

编辑:

在重新阅读您的问题后,我认为问题最终可能与您创建虚拟环境的方式有关。

命令lsvirtualenvworkonvirtualenvwrapper提供。如果您使用命令mkvirtualenv(也由virtualenvwrapper提供)创建虚拟环境,则lsvirtualenvworkon会列出它们。

但是如果你这样创建它们:

virtualenv foo

virtualenvwrapper将无法识别您的虚拟环境。