Python多版本環境管理之pyenv

早先聽說python的時候已經是2.x和3.x並存了,據說3.x還不兼容2.x,想着這高版本連自己的舊版本都不兼容,這格局應該也發展不咋地.
時間是把殺豬刀,機器學習這個神奇的東西最終把這門語言再次推向了高潮,最神奇的是連運維都要和機器學習沾邊,美其名:AiOps.這不行啊,不學習一下機器學習都跟不上運維的發展趨勢了,於是機器學習沒學咋地,python倒是比較溜了.
學python一般都系統自帶2.7,但對於我這半道入門的選手,實在沒必要卡在2.x系列.於是多版本python管理是要玩溜的第一步.今天我們就一起學習一下python處理管理工具
pyenv安裝

curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
or
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

設置環境變量:
兩種Shell,bash用第一種,我是zsh所以我用第二種

vim ~/.bashrc 
export PYENV_ROOT="$HOME/.pyenv" 
export PATH="$PYENV_ROOT/bin:$PATH" 
eval "$(pyenv init -)"
$ source ~/.bashrc
或者
$ vi ~/.zshrc:
export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
然後同樣激活上面的配置:
$ source ~/.zshrc

現在我們就可以使用pyenv了:

pyenv versions
* system (set by /Users/rainbird/.pyenv/version)
  3.7.3
  3.7.5
  3.8.2
星號表示當前正在使用的Python版本。

正常應該顯示空吧?我上面列出來是我本地使用的版本(看看,都低於3.7吧)

查看所有可安裝的Python版本:

pyenv install -l

安裝與卸載:

pyenv install 3.7.3   # 安裝python3.7.3
pyenv uninstall 3.7.3 # 卸載python3.7.3

設置python版本
對所有的Shell全局有效,會把版本號寫入到~/.pyenv/version文件中

pyenv global 3.7.3

只對當前目錄有效,會在當前目錄創建.python-version文件

pyenv local 3.7.3

只在當前會話有效

pyenv shell 3.7.3

重置版本設置
只有 pyenv shell 和 pyenv local 命令有--unset參數

pyenv shell --unset
pyenv local --unset

常見問題:

  • 下載過慢
    pyenv install執行以後,由於使用下載源碼包使用的官方地址,很大概率會卡在第一步的下載,這時候我一般會選擇使用sohu源,將源文件下載到pyenv的cache目錄,然後再執行pyenv install.
    以3.8.2爲例

    export v=3.8.2;wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v
  • 各種找不到問題一步解決

    apt-get install build-essential zlib1g-dev libffi-dev libbz2-dev libreadline-dev libssl-dev libsqlite3-dev  -y
  • 找不到C編譯器
    configure: error: no acceptable C compiler found in $PATH

    apt-get install build-essential -y
  • 找不到zip模塊
    zipimport.ZipImportError: can't decompress data; zlib not available

    apt-get install zlib1g-dev -y
  • 找不到ctypes
    ModuleNotFoundError: No module named '_ctypes'

    apt-get install libffi-dev
  • bz2擴展未編譯
    WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
    apt-get install -y libbz2-dev libreadline-dev
  • readline擴展未編譯
    WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?

    apt-get install -y libbz2-dev libreadline-dev
  • ssl擴展未編譯
    ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

    apt-get install libssl-dev -y
  • sqlite3未編譯
    WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
    apt-get install libsqlite3-dev -y
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章