在 MacOS 上为 Python 3.6 初始化 virtualenvwrapper

mbe*_*ger 5 python macos virtualenv virtualenvwrapper

我想在 Python 3.6 中使用 virtualenvwrapper,但是,我正在使用默认使用 Python 2.7 的 Mac,但我遇到了问题。这是我到目前为止所做的。使用以下命令,我找到了每个 Python 版本的保存位置:

>> which python 
>> /usr/bin/python

>> which python3
>> /Library/Frameworks/Python.framework/Versions/3.6/bin/python3
Run Code Online (Sandbox Code Playgroud)

我已经成功安装了 virtualenv 和 virtualenvwrapper 使用:

>> pip3 install virtualenv
>> pip3 install virtualenvwrapper
Run Code Online (Sandbox Code Playgroud)

然后我搜索 virtualenv 和 virtualenv 包装器的位置以确认它们的位置:

>> 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
Run Code Online (Sandbox Code Playgroud)

如果我去这个站点包目录有以下内容:

virtualenvwrapper
    |--- __pycache__
    |--- hook_loader.py
    |--- project.py
    |--- user_scripts.py
virtualenvwrapper-4.8.2-py2.7-nspkg.pth
virtualenvwrapper-4.8.2.dist-info
Run Code Online (Sandbox Code Playgroud)

根据 virtualenvwrapper 的文档,我应该将以下内容添加到我的 shell 启动文件中以确保初始化,将 virtualenvwrapper 的路径更改为我机器上设置的路径:

 export WORKON_HOME=~/Envs
$ mkdir -p $WORKON_HOME
$ source /usr/local/bin/virtualenvwrapper.sh
Run Code Online (Sandbox Code Playgroud)

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

>> which virtualenvwrapper.sh
>> /Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenvwrapper.sh
Run Code Online (Sandbox Code Playgroud)

我使用以下方法更改了我的 .bashrc 文件:

>> nano ~./bashrc
Run Code Online (Sandbox Code Playgroud)

抄录如下:

# script for virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenvwrapper.sh
Run Code Online (Sandbox Code Playgroud)

然后我打开了一个新终端并运行:

>> source `which virtualenvwrapper.sh`
Run Code Online (Sandbox Code Playgroud)

这给了我:

  /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.
Run Code Online (Sandbox Code Playgroud)

我不明白的是为什么 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
Run Code Online (Sandbox Code Playgroud)

另一个问题是,如果我想对 Python3 使用 virtualenvwrapper,是否需要使用 pip3 安装它。例如,这篇文章指出您只需要传递一个标志,但是,您还应该警惕在基本 Python 安装中安装它。

phd*_*phd 0

添加

export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
Run Code Online (Sandbox Code Playgroud)

.bashrc在终端中执行命令。这设置了 Python 解释器的路径virtualenvwrapper