使用了一段時間,我發現這玩意根本不是什么神器,簡直就是垃圾,安裝多版本總是失敗,并且重復在系統環境中重復添加值(好幾百行),我不建議使用這個工具,我建議使用anaconda,
由于Python的2.x與3.x版本的一些語法使用是不相同的,所以在寫和使用Python程式上都會遇到需要切換版本的情況,下面介紹切換Python版本的工具pyenv,
安裝pyenv
這里以mac舉例,需要先安裝brew,沒有安裝的先去安裝一下,現在安裝brew和pyenv都需要在終端上設定一下代理,
brew update
brew install pyenv
配置一下zsh
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
zsh
安裝與查看py版本
# 查看可安裝的版本
pyenv install -l
# 安裝與卸載 python 3.6.6 , 注意安裝py版本也需要設定一下終端代理,不然可能會超時導致失敗
pyenv install 3.6.6
pyenv uninstall 3.6.6
# 查看當前的 Python 版本
pyenv version
# 查看已經安裝的Python版本
pyenv versions

安裝后的py版本在/Users/你的用戶名/.pyenv/versions 目錄,
? versions pwd
/Users/thoth/.pyenv/versions
? versions ls
3.6.6
? versions
切換py版本
# global 全域設定 一般不建議改變全域設定
pyenv global <python版本>
# shell 會話設定 只影響當前的shell會話
pyenv shell <python版本>
# 取消 shell 會話的設定
pyenv shell --unset
# local 本地設定 只影響所在檔案夾
pyenv local <python版本>
優先級關系是:shell > local > global
這里做一下實驗,寫個小腳本運行一下:
seeversion.py
import sys
print(sys.version)
print(sys.version_info)
驗證切換到3.3.6
# 設定版本
? program pyenv shell 3.6.6
# 查看版本
? program pyenv versions
system
* 3.6.6 (set by /Users/thoth/program/.python-version)
# 運行腳本和預期一致
? program python seeversion.py
2.7.16 (default, Dec 13 2019, 18:00:32)
[GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1100.0.32.4) (-macos10.15-objc-s
sys.version_info(major=2, minor=7, micro=16, releaselevel='final', serial=0)
驗證切換回系統默認版本
# 設定版本
? pyenv local system
# 查看版本
? ~ pyenv versions
* system (set by /Users/thoth/.python-version)
3.6.6
# 運行腳本和預期一致
? ~ python seeversion.py
2.7.16 (default, Dec 13 2019, 18:00:32)
[GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1100.0.32.4) (-macos10.15-objc-s
sys.version_info(major=2, minor=7, micro=16, releaselevel='final', serial=0)
總結:
我感覺全域就是你在終端的那個目錄運行,都有效,但是這樣設定未免太浪費,畢竟我們一般只在幾個固定目錄運行py腳本,
shell就是你在當前打開的終端有效,關閉后無效,
local就是,比如你cd進program目錄,就在當前的.program目錄內有效,其它目錄無效,
結合ide使用示例
想讓ide運行你安裝的版本,設定運行版本路徑為:/Users/thoth/.pyenv/versions/3.6.6/bin/python即可,

和virtualenv的一些區別
pyenv可以很方便地在終端和ide切換不同版本,但對于需要開發不同py程式的開發人員來說,不同的專案意味著每個專案都有不同的擴展類別庫,這些類別庫都統一安裝在相應版本的python環境,會讓他們感到很不舒服,不方便管理,也會臃腫,就會希望每個專案的環境都是獨立的,純粹的,干凈的,有了這個挑剔的需求,virtualenv就是為這個而生的,
參考文獻
https://www.sqlsec.com/2019/12/pyenv.html#toc-heading-5
https://www.jianshu.com/p/8aaf2525fa80
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/165923.html
標籤:Python
