為了解決包依賴、安裝權限和 python 版本問題,程式員們制造了許多工具。我把它們做一個彙總,便于查找。
這裡介紹的工具都是目前流行的,不會包含已經不再維護的工具。
virtualenv
virtualenv 是目前最流行的 python 虛拟環境配置工具。它不僅同時支援 python2 和 python3,而且可以為每個虛拟環境指定 python 解釋器,并選擇不繼承基礎版本的包。
virtualenvwrapper
關于為什麼使用 shell 腳本開發,作者專門 進行了解釋 。
virtualenvwrapper 還有針對 vim 使用者和 emacs 使用者的 擴充 。
virtualenvwrapper 能支援 bash/ksh/zsh ,是以我們可以看出,它不支援 Windows。
virtualenvwrapper-win
由于 virtualenvwrapper 基于 shell 開發,是以不能在 Windows 系統上使用。但我們可以使用針對 Windows batch shell 的 virtualenvwrapper-win。
venv
Python 從3.3 版本開始,自帶了一個虛拟環境 venv,在 PEP-405 中可以看到它的詳細介紹。它的很多操作都和 virtualenv 類似。
因為是從 3.3 版本開始自帶的,這個工具也僅僅支援 python 3.3 和以後版本。是以,要在 python2 上使用虛拟環境,依然要利用 virtualenv 。
在 *nix 系統上,可以直接執行 pyvenv /path/to/new/virtual/enviorment 來建立一個虛拟環境,在 Windows 系統上,則可以使用 python -m venv myenv 來建立。
2015-04-18 更新:
pyvenv 3.4 在 Ubuntu 14.04 下有 bug,如下:
1
2
3
pyvenv ➤ python3 -m venv blog
Error: Command '['/home/zrong/pyvenv/blog/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1
pyvenv ➤ pyvenv-3.4 --without-pip blog
解決方法是建立一個不含 pip 的虛拟環境,然後手動安裝 pip :
1
2
3
4
pyvenv-3.4 --without-pip venvdir
source venvdir/bin/activate
curl https://bootstrap.pypa.io/get-pip.py | python
source venvdir/bin/activate
參見:
pyenv
我們可以用許多方法讓不同的 Python 版本在系統上共存。
例如在 OS X 上,如果使用官方提供的 DMG 版本安裝,那麼自帶的 python2 和新安裝的 python3 是可以共存的。python3 可以使用 python3 來調用,甚至 pip 都可以使用 pip3 來調用。
但如果還有其它小版本需要共存麼?我要記憶多少指令呢?
pyenv 用來解決這類問題。它可以安裝、解除安裝、編譯、管理多個 python 版本,并随時将其中一個設定為工作環境。
pyenv 不支援 Windows 系統。
pywin
Windows 上有一個 pyenv 的替代品,是 pywin 。它用來在多個安裝的 Python 版本之間進行切換,也支援 MSYS/MINGW32 。
Python Launcher for Windows
Python 從3.3版本開始(又是3.3?),在 Windows 系統中自帶了一個 py.exe 啟動工具。如果你是使用 Python.org 官網下載下傳的安裝包安裝的 Python 3.3(或更新版本)環境,那麼可以直接在指令提示符中使用這個工具。
py 可以打開預設的 python 提示符; py -2.7 和 py -3 打開對應的 Python 版本。
—- 分割線 —-
上面介紹的工具中,前四個是虛拟環境切換工具,後三個是 Python 版本環境切換工具。将這兩套工具結合使用,可以完美解決 python 多版本環境的問題。