如何让virtualenv运行Python 3而非Python 2.7?(Mac环境)
解决Virtualenv默认使用Python2.7而非3.6的问题
我来帮你搞定这个头疼的版本问题!你的情况其实很常见,核心原因是你的virtualenv工具本身关联的是Python2.7——哪怕系统PATH里/usr/local/bin优先级更高,它还是会用自己绑定的Python版本来创建虚拟环境。下面给你几个直接有效的解决办法:
方法一:创建虚拟环境时直接指定Python3.6路径
这是最直接的临时解决方案,不用改动现有工具,每次创建环境时明确指定要用的Python版本:
virtualenv -p /usr/local/bin/python venv
执行完这个命令再激活环境:
source venv/bin/activate
此时再跑python --version,就会显示3.6版本了。
方法二:安装Python3.6专属的Virtualenv
如果不想每次都加-p参数,可以把默认的virtualenv换成Python3.6版本的:
- 先卸载当前关联Python2.7的virtualenv(如果是通过pip安装的):
pip uninstall virtualenv
- 用Python3.6的pip来安装virtualenv:
pip3 install virtualenv
安装完成后,再执行which virtualenv,应该会显示路径在/usr/local/bin下。这时候直接创建环境:
virtualenv venv
激活后默认就是Python3.6了。
方法三:用Python3自带的venv模块(更推荐)
Python3.3+自带了venv模块,不需要额外安装virtualenv,用法更简洁:
python3 -m venv venv
激活环境后同样会使用Python3.6版本,而且避免了不同版本virtualenv的冲突问题。
补充说明
为什么之前会出现PATH优先级高但virtualenv还是用2.7的情况?因为如果你的virtualenv是通过Python2.7的pip安装的,它会硬关联到/usr/bin/python(也就是2.7),运行时不会去读你的PATH找优先级更高的Python版本。所以要么指定路径,要么换用Python3的virtualenv/venv就可以解决啦。
内容的提问来源于stack exchange,提问作者JeffGallant
相关产品推荐
相关产品推荐

