我遵循本指南的Python的virtualenv,并遇到了一个小问题:
Sahands-MBP:empty sahandzarrinkoub$ source /usr/local/bin/virtualenvwrapper.sh /usr/bin/python: No module named virtualenvwrapper 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/bin/python and that PATH is set properly.
打印输出是相当有帮助的。 它说,我需要检查已经为VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
安装了virtualenvwrapper,并且PATH
设置正确。 唯一的问题是,我不知道这些是什么意思。 所以我的问题是:
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
。 PATH
? 不完全确定你需要什么,但也许这会有所帮助。 这有点冗长,但希望能回答你的问题:
这里有很多事情要做。
首先,/usr/local/bin/virtualenvwrapper.sh是一个shell脚本。 如果您阅读脚本,您将看到以下代码:
# Locate the global Python where virtualenvwrapper is installed. if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ] then VIRTUALENVWRAPPER_PYTHON="$(command \which python)" fi
这意味着virtualenvwrapper.sh脚本使用名为VIRTUALENVWRAPPER_PYTHON的环境变量来确定python安装。 这很重要,因为:
其次,可以在系统上安装多个版本的Python。 (我目前有3:2.7,3.5和3.6)。 无论如何,在Linux系统中,
/usr/bin/python
象征性地链接到这些版本之一。 这是我的系统Linux系统上的外观:
lenovo:davidj ~ > ls -l /usr/bin/python lrwxrwxrwx 1 root root 24 Apr 28 23:36 /usr/bin/python -> /etc/alternatives/python lenovo:davidj ~ > ls -l /etc/alternatives/python lrwxrwxrwx 1 root root 18 Aug 31 14:56 /etc/alternatives/python -> /usr/bin/python3.6
所以,遵循链接的符号链接,当我跑
/usr/bin/python
我正在运行版本3.6。 我可以随意更改这些链接,指向版本2.7,3.5或我可能安装的任何其他版本。
这意味着什么:除非将VIRTUALENVWRAPPER_PYTHON设置为特定的python安装,否则/usr/local/bin/virtualenvwrapper.sh将默认为/ usr / bin / python以确定正在运行的默认python版本。
就我而言,在我的.bashrc文件中
export VIRTUALENVWRAPPER_PYTHON='/usr/bin/python3.6'
这意味着virtualenvwrapper将使用Python 3.6,因为我告诉它使用该特定的版本。
在你的情况下,脚本失败,因为virtualenvwrapper没有安装该版本的/ usr / bin / python指向的python。 要确定你的python版本,只需运行:
python -V
然后为该版本安装virtualenvwrapper。
我希望这有帮助。