python virtual enviorments
為了解決包依賴、安裝權(quán)限和 python 版本問(wèn)題,程序員們制造了許多工具。我把它們做一個(gè)匯總,便于查找。
這里介紹的工具都是當(dāng)前流行的,不會(huì)包含已經(jīng)不再維護(hù)的工具。
virtualenv 是目前最流行的 python 虛擬環(huán)境配置工具。它不僅同時(shí)支持 python2 和 python3,而且可以為每個(gè)虛擬環(huán)境指定 python 解釋器,并選擇不繼承基礎(chǔ)版本的包。
顧名思義,virtualenvwrapper 是對(duì) virtualenv 的一個(gè)封裝,目的是使后者更好用。
關(guān)于為什么使用 shell 腳本開(kāi)發(fā),作者專門(mén) 進(jìn)行了解釋 。
virtualenvwrapper 還有針對(duì) vim 用戶和 emacs 用戶的 擴(kuò)展 。
virtualenvwrapper 能支持 bash/ksh/zsh
,所以我們可以看出,它不支持 Windows。
由于 virtualenvwrapper 基于 shell 開(kāi)發(fā),因此不能在 Windows 系統(tǒng)上使用。但我們可以使用針對(duì) Windows batch shell 的 virtualenvwrapper-win。
Python 從3.3 版本開(kāi)始,自帶了一個(gè)虛擬環(huán)境 venv,在 PEP-405 中可以看到它的詳細(xì)介紹。它的很多操作都和 virtualenv 類似。
因?yàn)槭菑?3.3 版本開(kāi)始自帶的,這個(gè)工具也僅僅支持 python 3.3 和以后版本。所以,要在 python2 上使用虛擬環(huán)境,依然要利用 virtualenv 。
在 *nix 系統(tǒng)上,可以直接執(zhí)行 pyvenv /path/to/new/virtual/enviorment
來(lái)創(chuàng)建一個(gè)虛擬環(huán)境,在 Windows 系統(tǒng)上,則可以使用 python -m venv myenv
來(lái)創(chuàng)建。
pyvenv 3.4 在 Ubuntu 14.04 下有 bug,如下:
pyvenv ? python3 -m venv blog Error: Command '['/home/zrong/pyvenv/blog/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1pyvenv ? pyvenv-3.4 --without-pip blog
解決方法是創(chuàng)建一個(gè)不含 pip 的虛擬環(huán)境,然后手動(dòng)安裝 pip :
pyvenv-3.4 --without-pip venvdirsource venvdir/bin/activatecurl https://bootstrap.pypa.io/get-pip.py | pythonsource venvdir/bin/activate
參見(jiàn):
我們可以用許多方法讓不同的 Python 版本在系統(tǒng)上共存。
例如在 OS X 上,如果使用官方提供的 DMG 版本安裝,那么自帶的 python2 和新安裝的 python3 是可以共存的。python3 可以使用 python3
來(lái)調(diào)用,甚至 pip
都可以使用 pip3
來(lái)調(diào)用。
但如果還有其它小版本需要共存么?我要記憶多少命令呢?
pyenv 用來(lái)解決這類問(wèn)題。它可以安裝、卸載、編譯、管理多個(gè) python 版本,并隨時(shí)將其中一個(gè)設(shè)置為工作環(huán)境。
pyenv 不支持 Windows 系統(tǒng)。
Windows 上有一個(gè) pyenv 的替代品,是 pywin 。它用來(lái)在多個(gè)安裝的 Python 版本之間進(jìn)行切換,也支持 MSYS/MINGW32 。
Python 從3.3版本開(kāi)始(又是3.3?),在 Windows 系統(tǒng)中自帶了一個(gè) py.exe 啟動(dòng)工具。如果你是使用 Python.org 官網(wǎng)下載的安裝包安裝的 Python 3.3(或更新版本)環(huán)境,那么可以直接在命令提示符中使用這個(gè)工具。
py
可以打開(kāi)默認(rèn)的 python 提示符; py -2.7
和 py -3
打開(kāi)對(duì)應(yīng)的 Python 版本。
—- 分割線 —-
上面介紹的工具中,前四個(gè)是虛擬環(huán)境切換工具,后三個(gè)是 Python 版本環(huán)境切換工具。將這兩套工具結(jié)合使用,可以完美解決 python 多版本環(huán)境的問(wèn)題。
(全文完)
聯(lián)系客服