問題描述
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