Mac环境下使用pyenv和pyenv-virtualenv管理
前言
Mac上会自带Python2和Python3各一个版本,但最好别动,因为这是给MacOS用的,不是给你用的。
我们可以使用pyenv和pyenv-virtualenv安装自己的Python版本和Python虚拟环境。
pyenv用来管理python版本
pyenv-virtualenv用来管理某个python版本对应的虚拟环境
我们选用手动安装的方式,你也可以用homebrew安装
1、安装pyenv并且配置
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
如果你的shell环境是.bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
source ~/.bash_profile
如果你是.zsh
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc
source ~/.zshrc
到这里就安装完成且配置好了,
2、安装自己用的Python版本
查看可以安装的Python版本。
pyenv install --list
我选择3.8.6版本进行安装。
pyenv install 3.8.6
安装过程中如果碰到报错 error: Unexpected output of 'arch' on OSX
解决方案是 arch -arch x86_64 env PATH=${PATH/\/opt\/homebrew\/bin:/} pyenv install 3.8.6
安装完成后,目录结构如下:
使新安装的Python版本全局生效
pyenv global 3.8.6
此时我们再输入 python3,就可以看到Python版本已经变了。
3、安装virtualenv并且配置
我们以插件形式把virtualenv安装到.pyenv目录
git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
如果你的shell环境是.bash
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
然后重启shell就可以啦
exec "$SHELL"
如果你是.zsh
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
然后重启shell就可以啦
exec "$SHELL"
至此,virtualenv已经安装完毕,此时的目录结构如下:
4、创建某个Python版本对应的某个Python虚拟环境
首先创建一个虚拟环境 ,命令格式为 pyenv virtualenv <版本> <名称>
pyenv virtualenv 3.8.6 3.8.6-zidonghua-ios
此时再看目录结构:
激活这个虚拟环境 ,命令格式为 pyenv activate <名称> (反激活为 pyenv deactivate)
pyenv activate 3.8.6-zidonghua-ios
我们就可以在这个Python虚拟环境下愉快的玩耍啦!
可以使用 pip3 安装各种Python库,安装的库都是 3.8.6-zidonghua-ios 专属的。
然而此时我遇到了下面的报错
于是乎我谷歌了一下,在 3.8.6-zidonghua-ios 文件夹下有个文件叫 pyvenv.cfg ,把里面的 include-system-site-packages = false 改为 true就好啦
5、虚拟环境里安装各种Python工具库
在这里我遇到坑了。。。
首先虚拟环境已经激活了,which pip3 也是指向虚拟环境的pip3,但每次 pip3 install 都是安装在了系统目录下,而不是虚拟环境目录下。最后排查了半天,发现时因为我加了 --user
去掉 --user就好了。
强烈建议直接用PyCharm打开一个工程,关联到这个虚拟环境
让PyCharm关联到工程里的 requirements.txt 自动安装是最好的了。
但是要保证pip3的源已经切到公司私有源了,执行 pip3 config list 就可以看到啦。