macOS下为Python3.7.2安装virtualenv遇权限及版本混淆问题求助
Hey,我来帮你一步步理清这个问题——你遇到的其实是macOS上Python2和Python3共存时常见的环境混淆问题,咱们逐个解决:
你的默认python --version已经是3.7.2了,这说明python命令关联的是Python3,但系统自带的Python2还在,所以pip默认绑定的是Python2的pip(这就是为啥virtualenv装到了Python2.7目录里)。
你根本不需要单独安装pip3!Python3本身就自带pip工具,只是你得用正确的方式调用它:
- 直接执行
python -m pip --version,你会看到它对应的就是Python3.7.2的环境,这就是你要的「pip3」。
如果输入python3 --version也能返回3.7.2,那python3 -m pip效果是一样的。
方案1:用Python3自带的venv(推荐,零额外安装)
从Python3.3开始,官方就内置了虚拟环境工具venv,完全能替代virtualenv,不用额外装包。操作超简单:
- 创建虚拟环境:
python -m venv 你的环境名 # 比如 python -m venv my_demo_env
- 激活虚拟环境:
source 你的环境名/bin/activate
激活后命令行开头会出现(my_demo_env)的标记,此时你用pip安装的所有包都会被隔离在这个环境里,不会污染全局Python环境。
方案2:安装virtualenv到Python3环境
如果你习惯用virtualenv,那用Python3的pip来安装,记得加--user参数避开权限问题(之前的「Permission denied」是因为要写入系统目录,不建议用sudo装包):
python -m pip install --user virtualenv
安装完成后,需要把用户专属的Python bin目录加到PATH里,这样才能直接用virtualenv命令:
- 打开你的shell配置文件——如果用bash就编辑
~/.bash_profile,用zsh就编辑~/.zshrc。 - 添加一行:
export PATH="$HOME/Library/Python/3.7/bin:$PATH"
- 保存后执行
source ~/.bash_profile(或者source ~/.zshrc),之后再输virtualenv --version,就能看到它属于Python3.7的版本了。
brew install pip3会失败? brew里根本没有单独的pip3公式!因为pip3是和Python3捆绑在一起的——不管你是通过brew装Python3,还是从Python官网下载安装包,pip3都会自动跟着装。你现在的情况是python已经指向Python3,所以直接用python -m pip就完全能替代pip3命令,没必要纠结找不到pip3的问题。
内容的提问来源于stack exchange,提问作者Steve Boniface

