1. 程式人生 > 實用技巧 >Python 虛擬環境 pyenv、venv(pyvenv)、virtualenv之間的區別

Python 虛擬環境 pyenv、venv(pyvenv)、virtualenv之間的區別

Python 虛擬環境 pyenv、venv(pyvenv)、virtualenv之間的區別

另外在python3.6中,虛擬應該用如下命令建立

python3 -m venv /path/to/new/virtual/environment

直接用pyvenv /path/to/new/virtual/environment
建立也能成功,但是會有一個warning,具體解釋可以參考這個文章https://docs.python.org/3/library/venv.html

yy1s@linux-9qk9:~> pyvenv monitor2
WARNING: the pyenv script is deprecated in favour of `python3.6 -m venv`

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

為了解決包依賴、安裝許可權和 python 版本問題,程式設計師們製造了許多工具。我把它們做一個彙總,便於查詢。

這裡介紹的工具都是當前流行的,不會包含已經不再維護的工具。

virtualenv

virtualenv是目前最流行的 python 虛擬環境配置工具。它不僅同時支援 python2 和 python3,而且可以為每個虛擬環境指定 python 直譯器,並選擇不繼承基礎版本的包。

virtualenvwrapper

顧名思義,virtualenvwrapper是對virtualenv的一個封裝,目的是使後者更好用。

關於為什麼使用 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.7py -3開啟對應的 Python 版本。

—- 分割線 —-

上面介紹的工具中,前四個是虛擬環境切換工具,後三個是 Python 版本環境切換工具。將這兩套工具結合使用,可以完美解決 python 多版本環境的問題。