因为manjaro系统更新而导致的python版本混乱问题
问题描述
sudo pacman -Syyu
系统更新后,原本的系统python从3.7升级到了3.8,导致很多原本用python3.7创建的虚拟环境和3.7构建的youcomplete等无法使用,
解决方法
使用pyenv和pyenv-virtualenv来管理python版本,不使用系统python创建虚拟环境,改而使用pyenv下载的python创建虚拟环境
下载pyenv和pyenv-virtualenv
sudo pacman -Sy pyenv
sudo pacman -Sy pyenv-virtualenv
下面开始写入配置
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
Zsh note: Modify your ~/.zshrc
file instead of ~/.bash_profile
.
Ubuntu and Fedora note: Modify your ~/.bashrc
file instead of ~/.bash_profile
.
Proxy note: If you use a proxy, export http_proxy
and HTTPS_PROXY
too.
将pyenv init添加到您的终端配置中以启用填充和自动补全功能,请确保将eval“ $(pyenv init-)”
放在shell配置文件的末尾
,因为它在初始化期间会操纵PATH。
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
Zsh note: Modify your ~/.zshrc
file instead of ~/.bash_profile
.
fish note: Use pyenv init - | source
instead of eval (pyenv init -)
.
Ubuntu and Fedora note: Modify your ~/.bashrc
file instead of ~/.bash_profile
.
下载可由pyenv管理的python:
pyenv install 3.8.1
pyenv install 3.7.6
如果下载缓慢请参考:https://www.jianshu.com/p/df950a0a428f
使用pyenv中指定的python版本创建虚拟环境,这样下次系统更新后即使系统python变化了,用pyenv创建的虚拟环境依然不会受到影响。
pyenv virtualenv 3.7.6 ml_learn_3.7.6
pyenv创建的虚拟环境也需要用pyenv**和关闭:
pyenv activate ml_learn_3.7.6
pyenv deactivate
关于一些由过去系统python构建的youcomplete等软件无法使用问题,需要将软件重新用现在的系统python构建,虽然可以用pyenv切换到3.7.6的版本,使用这些命令:
修改全局python版本:
切换全局使用的python版本
pyenv global 3.7.6
切换当前shell内使用的python版本
pyenv shell 3.7.6
切换当前文件内使用的python版本
pyenv local 3.7.6
但每次用都切换太麻烦,还是重构软件,保持global python一直是系统python方便点。
参考网址:
https://github.com/pyenv
https://github.com/pyenv/pyenv-virtualenv