在 MacOS 上为 Python 3.6 初始化虚拟环境包 virtualenvwrapper

5
我希望在Mac上使用Python 3.6,结合virtualenvwrapper。但是由于默认使用的是Python 2.7,我遇到了问题。目前已经执行以下命令,找到了每个Python版本保存的位置:
>> which python 
>> /usr/bin/python

>> which python3
>> /Library/Frameworks/Python.framework/Versions/3.6/bin/python3

我已成功安装virtualenv和virtualenvwrapper,使用以下命令:

>> pip3 install virtualenv
>> pip3 install virtualenvwrapper

我接着搜索了virtualenv和virtualenv wrapper的位置,以确认它们的位置:

>> pip3 show virtualenv
>> Location: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages

>> pip3 show virtualenvwrapper
>> Location: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages

如果我进入这个site-packages目录,会看到以下内容:
virtualenvwrapper
    |--- __pycache__
    |--- hook_loader.py
    |--- project.py
    |--- user_scripts.py
virtualenvwrapper-4.8.2-py2.7-nspkg.pth
virtualenvwrapper-4.8.2.dist-info

根据virtualenvwrapper的文档,我应该将以下内容添加到我的shell启动文件中以确保初始化,并将virtualenvwrapper的路径更改为在我的计算机上设置的路径:
 export WORKON_HOME=~/Envs
$ mkdir -p $WORKON_HOME
$ source /usr/local/bin/virtualenvwrapper.sh

然后我搜索了virtualenvwrapper.sh的实际位置(出于某些原因,它不在virtualenvwrapper模块安装的位置):

>> which virtualenvwrapper.sh
>> /Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenvwrapper.sh

我使用以下命令更改了我的 .bashrc 文件:

>> nano ~./bashrc

复制以下内容:
# script for virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenvwrapper.sh

然后我打开一个新终端,运行了以下命令:

>> source `which virtualenvwrapper.sh`

这使我得到了:
  /usr/bin/python3: 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/bin/python3 and that PATH is
set properly.

我不理解的是为什么virtualenvwrapper需要位于非目录的/usr/bin/python3。由于它在bin中,我也无法将其变成一个目录。此外,virtualenvwrapper.hook_loader与virtualenvwrapper.sh不在同一位置,这可能会导致问题。
我还尝试创建到/usr/local/bin的符号链接,因为有些人说这可以解决问题,但这并没有解决我的问题。
sudo ln /Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenvwrapper.sh /usr/local/bin/virtualenvwrapper.sh

另一个问题是,如果我想使用Python3的virtualenvwrapper,是否需要使用pip3进行安装。例如,这篇文章指出你只需要传递一个标志,但是你也应该注意不要在基本的Python安装中安装它。

1个回答

0

添加

export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.6/bin/python3

进入.bashrc文件并在终端中执行该命令。这将为virtualenvwrapper设置Python解释器的路径。


1
我仍然遇到了同样的问题:`/usr/bin/python: No module named virtualenvwrapper virtualenvwrapper.sh: There was a problem running the initialization hooks.如果 Python 无法导入模块 virtualenvwrapper.hook_loader, 请检查是否已为 VIRTUALENVWRAPPER_PYTHON=/usr/bin/python 安装了 virtualenvwrapper 并且 PATH 已正确设置。` - mattbeiswenger
快速问题:当我运行 which -a python3 时,我得到了 /Library/Frameworks/Python.framework/Versions/3.8/bin/python3/usr/local/bin/python3/usr/bin/python3,这是什么意思? - kd12345
@kd12345请不要滥用评论区提出与主题无关的问题。评论应该是针对问题或答案的讨论。 - phd
@phd 很抱歉,我应该使用您建议的答案还是这个 export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 - kd12345

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接