Python virtualenvwrapper 运行初始化钩子时出现问题

Python virtualenvwrapper 运行初始化钩子时出现问题

在全新安装的 16.04 中,我尝试按照以下步骤安装 virtualenvwrapper这个很棒的答案格哈德·伯格。

配置完成后.bashrc,每次打开终端都会显示

bash: /usr/local/bin/python2.7: No such file or directory
virtualenvwrapper.sh: There was a problem running the initialization hooks. 

If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 and that PATH is
set properly.

脚本位置是,

$ sudo find / -name virtualenvwrapper.sh
[sudo] password for john: 
/usr/local/bin/virtualenvwrapper.sh

我的内容.bashrc是,

export WORKON_HOME=/home/john/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
export PIP_VIRTUALENV_BASE=/home/john/.virtualenvs

这是我的pip freeze

cffi==1.5.2
greenlet==0.4.9
pbr==1.10.0
readline==6.2.4.1
six==1.10.0
stevedore==1.15.0
virtualenv==15.0.2
virtualenv-clone==0.2.6
virtualenvwrapper==4.7.1

Python 解释器的位置,

$ which python
/usr/bin/python

我怎样才能让它工作?

谢谢。

答案1

我正在使用 Ubuntu 服务器 16.04,您还应该导出安装了 virtualenvwrapper 的 Python 解释器

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=~/.virtualenvs
source /home/vagrant/.local/bin/virtualenvwrapper.sh

确保根据您自己的系统替换上述所有路径。您的包装器脚本可能位于/usr/local/bin/virtualenvwrapper.sh,或者您可能使用不同的解释器或虚拟环境主目录,...

答案2

.bashrc变化中

VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

然后让它在当前 shell 中工作

source /usr/local/bin/virtualenvwrapper.sh 

之后,改变virtualenvwrapper.sh

VIRTUALENVWRAPPER_PYTHON="$(command \which python)"

对此

VIRTUALENVWRAPPER_PYTHON="$(command \which python3)"

答案3

只是评论

源 /usr/local/bin/virtualenvwrapper.sh

线路输入

~/.bashrc

文件....它对我有用。

答案4

首先使用以下命令交叉验证 .bashrc 中的 PATH:

which virtualenv

which virtualenvwrapper.sh

输出:

echo $VIRTUALENVWRAPPER_PYTHON

which python3

应该相同

/usr/bin/python3

根据以上结果配置路径

导出 WORKON_HOME=~/.virtualenvs

导出 MY_PROJECT=~/my_proj

导出 VIRTUALENVWRAPPER_WORKON_CD=1

导出 VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

导出 VIRTUALENVWRAPPER_VIRTUALENV='哪个虚拟环境的结果'

源‘virtualenvwrapper.sh 的结果’

如果验证路径后仍然存在初始化挂钩错误。

然后,在源代码中保留所有内容,只需将其替换virtualenvwrapper.shvirtualenvwrapper_lazy.sh

那么它应该可以工作

相关内容