如何强制'mkproject' (virtualenvwrapper)使用Python3作为默认版本?

5
我已经添加了以下行到我的bash中,但是mkproject仍然会在虚拟环境中创建Python 2.7文件夹,因此我仍然需要使用-p python3,但我希望不必这样做。
export VIRTUALENVWRAPPER_SCRIPT=/usr/local/bin/virtualenvwrapper.sh
export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
source /usr/local/bin/virtualenvwrapper_lazy.sh

1
export VIRTUALENVWRAPPER_VIRTUALENV=virtualenv3 的翻译是什么? - grochmal
我该如何定义"virtualenv3"? - 42piratas
2
要同时使用python2python3virtualenv,您需要两个virtualenv脚本。 virtualenv的第一行通常是#!/usr/bin/python2#!/usr/bin/python3(virtualenv的入口脚本非常短)。几个发行版实际上制作了两个软件包virtualenv2virtaulenv3。但是,由于您在Mac上,我相信您可以通过brew安全地将virtualenv复制-> virtualenv3并将第一行更改为#!/usr/bin/python3 - grochmal
1
哦,是的,你有一个指向/Library/Frameworks/Python.framework/Versions/3.5/bin/python3/usr/bin/python3软链接,对吧?(我可能在路径上有点偏差,因为我从未使用过Mac)。 - grochmal
谢谢,@grochmal!它已经起作用了 o/ - 42piratas
2个回答

3

virtualenvwrapper 理解 VIRTUALENVWRAPPER_VIRTUALENV 环境变量,你需要将其设置为适用于你正在使用的Python版本的 virtualenv。例如:

export VIRTUALENVWRAPPER_VIRTUALENV=virtualenv3

这是必要的,因为virtualenvwrapper将执行virtualenv作为shell脚本(在命令前面没有添加python2python3),这样virtualenv脚本将使用其shebang(#!)中定义的解释器来执行。
大多数Linux发行版提供两个软件包:virtualenv2virtualenv3,每个软件包都包含一个脚本: virtualenv2
#!/usr/bin/python2
import virtualenv
virtualenv.main()

virtualenv3:

#!/usr/bin/python3
import virtualenv
virtualenv.main()

在 Mac 上,你需要使用 brew 来安装 python。因此,将 virtualenv 脚本复制到两个实例中:vritualenv2virtualenv3,并将 shebang 更改为正确的 python 版本是没有问题的。
(你需要通过 pip 为每个 python 版本安装 virtualenv eggs。)

1
我在.bashrc文件中定义了一个别名,以默认使用python3覆盖mkproject命令:
alias mkproject='mkproject --python=/usr/bin/python3'

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