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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章