因为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

你可能感兴趣的:(manjaro)