Home >> Blog >> pyenv 教學-Python 控管版本的好幫手

pyenv 教學-Python 控管版本的好幫手

認識pyenv:一個簡單的 Python 版本管理工具。以前稱為 Pythonbrew,pyenv 允許您更改全版 Python 版本、安裝多個 Python 版本、設置目錄(項目)特定的 Python 版本,以及創建/管理虛擬 Python 環境(“virualenv”)。所有這些都是在 *NIX 風格的機器(Linux 和 OS X)上完成的,而不依賴於 Python 本身,它在用戶級別上工作——不需要任何sudo命令。所以讓我們開始吧!

安裝

按照安裝說明或使用自動安裝程式。如果您使用的是 Mac,我們強烈建議您使用Homebrew安裝 pyenv (避免 MacPorts 的擾亂)。無論您決定採用哪種方式,在簽出存儲庫後,請務必在您的.bashrc(.bash_profile在 Mac 上)添加幾行以啟用 pyenv 的自動完成功能。

Ubuntu 工作站複製粘貼安裝

這最適合我們的 Ubuntu 12.04 工作站,默認使用.bashrc配置文件代替.bash_profile.

cd
git clone git://github.com/yyuu/pyenv.git .pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc

pyenv 套件安裝程式

這是自動安裝程式提供的單線。

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

演練

~$ pyenv global
system
~$ pyenv versions
* system (set by /home/staff/jmoreira/.pyenv/version)

通常你只會安裝一個版本的python,即係統範圍的版本。這就是上面命令中顯示的內容。pyenv 現在允許你擴展這個版本。讓我們從安裝另一個 python 版本開始。例如,現在讓我們進入 python 的前沿:

~$ pyenv install 3.4.0
Installing readline-6.3...
Installed readline-6.3 to /home/staff/jmoreira/.pyenv/versions/3.4.0

Installing Python-3.4.0...
Installed Python-3.4.0 to /home/staff/jmoreira/.pyenv/versions/3.4.0

(順便說一句,不需要記住這些。pyenv install –list將顯示所有可用的 Python 版本來安裝)。

~$ pyenv versions
* system (set by /home/staff/jmoreira/.pyenv/version)
3.4.0

pyenv 現在列出了兩個 python 版本。要將 python 3.4 用作全局版本,我們這樣做:

pyenv global 3.4.0

您還可以使用 pyenv 定義特定於項目的或本地版本的 Python:

~$ pyenv global system

~$ mkdir cuting_edge
~$ cd cuting_edge/
~/cutting_edge$ pyenv local 3.4.0
~/cutting_edge$ python -V
Python 3.4.0
~/cutting_edge$ cd ..
~$ python -V
Python 2.7.6

虛擬環境

對於其他 virtualenv 用戶來說,本地 Python 的想法可能看起來很熟悉。事實上,從 pyenv 創建的本地 Python 幾乎就像一個 Python 虛擬環境。主要區別在於,每次創建新的 pyenv 版本時,pyenv 實際上都會復制整個 Python 安裝。相比之下,virtualenv 利用符號連結來減小 virtualenv 的大小。如果你不能在沒有虛擬環境的情況下運行,那麼不要害怕,因為有一個外掛可以做到這一點:pyenv-virtualenv. 這個外掛為 pyenv 添加了完整的 virtualenv 功能:

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
source ~/.bashrc

~$ mkdir virtual_env
~$ cd virtual_env/
~/virtual_env$ pyenv virtualenv 3.4.0 venv
Ignoring indexes: https://pypi.python.org/simple/
Requirement already satisfied (use --upgrade to upgrade): setuptools in /home/staff/jmoreira/.pyenv/versions/venv/lib/python3.4/site-packages
Requirement already satisfied (use --upgrade to upgrade): pip in /home/staff/jmoreira/.pyenv/versions/venv/lib/python3.4/site-packages
Cleaning up...

~/virtual_env$ pyenv versions
* system (set by /home/staff/jmoreira/.pyenv/version)
3.4.0
lab_web
venv

這裡我使用 Python 3.4 創建了 virtualenv(注意如果你想從系統 Python 創建一個 virtualenv,那麼 virtualenv 也需要安裝在系統級別)。

~/virtual_env$ pyenv activate venv
(venv) ~/virtual_env$ python -V
Python 3.4.0
(venv) ~/virtual_env$ pip list
pip (1.5.4)
setuptools (2.1)
(venv) ~/virtual_env$ pyenv deactivate
~/virtual_env

最後一個命令是停用 virtualenv 的推薦方法。這可確保 pyenv 在您離開 virtualenv 後仍能正常工作。

pyenv 的神奇之處在於它實際上重新定義了您的 Python 命令:

~$ which python
/home/staff/jmoreira/.pyenv/shims/python

當你嘗試運行SEO頁面分析程式而必須使用到 Python 時,它首先.python-version會在當前目錄中查找 a 來決定運行哪個版本的 python。如果它沒有找到這個文件,那麼它會尋找用戶級文件~/.pyenv/version。

這基本上就是它的全部。享受以安全、環保的方式開發 Python 程式碼的樂趣。