Python之虛擬環境管理


Python本身有很多個版本,第三方的Python包又有很多可用的版本,所以經常會遇到下面的問題:

  1. 運行不同的Python程序,需要使用不同版本的Python(2.x或3.x).
  2. 在同一中Python版本中,可能需要用到不同版本的第三方包,例如:Django 1.6或者Django 1.7

對於上面的問題,已經有很多現成的個工具可以解決。根據解決上面問題的方法,這些工具大概可以分為兩類:

  • Python 版本環境切換工具
  • 特定Python版本虛擬環境切換工具

現有工具及介紹

下面看看現在流行的虛擬環境工具,以及簡單的介紹。

Python 版本環境切換工具

Python版本環境切換工具的作用就是讓多個不同版本的Python可以在系統上共存。並且提供簡單的命令來支持不同Python版本之間的切換。

工具

介紹

pyenv

目前最流行的 python版本環境切換工具,但是不支持Windows

pywin

Windows 上pyenv 的替代品,但是功能相對pyenv比較少

py.exe

Python 3.3 版本以后Windows系統自帶的啟動工具(Python Launcher for Windows),可以直接在命令行中使用

 

特定Python版本虛擬環境切換工具

簡單的說,虛擬環境切換工具就是可以根據當前使用的Python版本環境來創建多個虛擬的Python環境。這些虛擬的環境之間相互獨立,可以安裝各個環境所需的Python包。

工具

介紹

virtualenv

目前最流行的 python 虛擬環境配置工具

virtualenvwrapper

使用shell開發,是對virtualenv的一個封裝,簡化了virtualenv命令的使用,並且進行了一些功能擴展

virtualenvwrapper-win

使用Windows batch shell開發的virtualenvwrapper

venv

Python 3.3 版本以后自帶的虛擬環境工具,僅支持 python 3.3 和以后版本

 

由於我現在大部分時間工作在Windows環境,下面就主要介紹一下pywin和virtualenvwrapper-win的使用。

pywin

現在看看Windows上Python版本環境切換工具pywin

對於pywin的工作原理就可以簡單的理解為,通過pywin提供的命令可以簡單的以設置環境變量的方式決定優先使用特定版本的Python。

安裝

對於pywin,我們可以使用源碼、easy_install和pip三種方式進行安裝,關於這些安裝方式的關系,請參考前一篇文章

下面通過pip來安裝pywin:

常用命令

安裝完成之后就看看pywin的常用命令。

"pyassoc"和"pywin genlaunchers"是兩個配置相關的命令。我本機安裝了2.7和3.4兩個版本的Python,默認環境變量指向2.7,配置完成后就會就會在2.7目錄中生成本機安裝所有Python版本的launcher。

配置完成之后,就可以通過pywin進行不同版本之間的Python切換了。

1. 打開環境變量PAHT中第一個Python版本環境

C:\Users\tianw1>pywin
Python 2.7.7 (default, Jun  1 2014, 14:17:13) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

2. 打開Python 3.4

C:\Users\tianw1>pywin -3.4
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

3. 將Python 3.4設置為默認的Python執行環境,根據輸出也可以看出,其實就是將Python 3.4目錄放在環境變量PATH的前面位置

C:\Users\tianw1>pywin setdefault 3.4

    Setting default python for active session to: 3.4
    C:\Python34;C:\Python34\Scripts -- now at front of PATH
# 由於Python 3.4中沒有安裝pywin,所以會報錯
C:\Users\tianw1>pywin
'pywin' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\tianw1>python
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

4. 即使上面通過pywin將默認Python版本環境設為3.4,但是由於文件的查找還是先本地,然后環境變量PATH。所以,下面方式使用的還是2.7版本,同時也可以再通過pywin將2.7設置為默認Python版本環境。

C:\>cd Python27
C:\Python27>python
Python 2.7.7 (default, Jun  1 2014, 14:17:13) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

C:\Python27>pywin setdefault 2.7

    Setting default python for active session to: 2.7
    C:\Python27;C:\Python27\Scripts -- now at front of PATH

C:\Python27>

virtualenvwrapper-win

在Windows環境中使用"virtualenvwrapper-win"還是比較方便的。

安裝

同樣使用pip進行安裝:

pip install virtualenvwrapper-win

常用命令

安裝完成之后,就可以直接使用"virtualenvwrapper-win"提供的命令來創建虛擬環境了。

1. 新建虛擬環境:mkvirtualenv env_name

C:\Users\tianw1>mkvirtualenv py27_dev1
New python executable in py27_dev1\Scripts\python.exe
Installing setuptools, pip, wheel...done.

(py27_dev1) C:\Users\tianw1>pip list
pip (7.1.2)
setuptools (18.2)
wheel (0.24.0)

注意,默認情況虛擬環境不會自通引用原始Python環境中的軟件包,但是可以通過"--system-site-packages"參數來使虛擬環境引用原始Python環境中的軟件包。

C:\Users\tianw1>mkvirtualenv --system-site-packages py27_dev2
New python executable in py27_dev2\Scripts\python.exe
Installing setuptools, pip, wheel...done.

(py27_dev2) C:\Users\tianw1>pip list
backports.ssl-match-hostname (3.4.0.2)
certifi (2015.4.28)
click (4.1)
flask (0.11.dev0)
gevent (1.0.2)
greenlet (0.4.7)
itsdangerous (0.24)
jinja2 (2.8)
pip (7.1.2)
pywin (0.3.1)
setuptools (18.2)
smmap (0.9.0)
tornado (4.2.1)
virtualenv (13.1.2)
virtualenvwrapper-win (1.2.1)
Werkzeug (0.10.4)
wheel (0.24.0)

2. 離開虛擬環境:deactivate

(py27_dev1) C:\Users\tianw1>deactivate

C:\Users\tianw1> 

3. 列出虛擬環境列表:workon 或lsvirtualenv

C:\Users\tianw1>workon

Pass a name to activate one of the following virtualenvs:
==============================================================================
py27_dev1
py27_dev2

C:\Users\tianw1>lsvirtualenv

dir /b /ad "C:\Users\tianw1\Envs"
==============================================================================
py27_dev1
py27_dev2

C:\Users\tianw1>

4. 刪除虛擬環境:rmvirtualenv env_name

總結

本文介紹了Python 版本環境切換工具和虛擬環境切換工具,通過這些工具可以方便系統中不同版本的Python切換,同時也方便了創建獨立的Python虛擬環境。

使用Python虛擬環境的另一個好處是可以方便的進行環境部署,對於每個虛擬環境,都可以通過下面的命令很方便的進行環境部署:

  • pip freeze > requirements.txt將包依賴信息保存在requirements.txt文件
  • pip install -r requirements.txt會自動從網上下載並安裝所有包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM