如何在OS X上建立到venv创建的python3的符号链接?

时间:2018-07-24 22:43:16

标签: macos matplotlib pycharm symlink python-venv

Matplotlib现在需要安装python作为框架,以便以交互模式(Working with Matplotlib on OSX)使用它,我这样做是:

python -m venv my-virtualenv
source my-virtualenv/bin/activate

这很好。例如,如果我这样做:

my-virtualenv> pip3 install tensorflow

在这个新环境中,它可以很好地构建tensorflow,当我在my-virtualenv中进入python3 shell时,可以很好地导入它。但是,当我创建符号链接时:

ln -s my-virtualenv/bin/python3 /usr/local/bin/python36x

然后输入python36x shell tensorflow例如不可用。我已经尝试过

python -m venv --copies my-virtualenv

也无济于事。如何创建功能性符号链接?

2 个答案:

答案 0 :(得分:0)

好的,Pycharm实际上有其自身的处理方式:请参见how to set the interpreter to use across multiple platforms。皮查姆很好!

答案 1 :(得分:0)

Python3的venv创建指向虚拟环境的bin / python的链接,而不是像virtualenv这样复制文件。 Python2的加载程序将跟踪链接,直到找到实际的python可执行文件为止,然后使用该目录查找库(../lib/)。 Python3的加载程序不遵循链接,而是使用python目录(是否链接)来定位库。

您可以使用别名代替链接:

alias python36e=my-virtualenv/bin/python3

它不在路径上,但可以直接访问。

更好的解决方案是在路径中放置包装脚本。

# cat /usr/local/bin/python36x
myprog=my-virtualenv/bin/python3

exec "${myprog}" "$@"

HTH