同一臺服務器上部署多個項目時,項目可能使用不同版本的django或者其它不同的python庫,這種情況下可以使用virtualenv來創建獨立的python運行環境,將不同項目的運行環境隔離出來。
virtualenv可以創建一個擁有自己安裝目錄的環境, 能夠方便的管理python版本和管理python庫。
安裝
pip install virtualenv
創建環境
基本命令:
virtualenv ENV
即在ENV目錄創建了一個新的虛擬環境。
pip和setuptools已在虛擬環境中自動下載完畢,可以使用這些工具來下載python包。
下載的python包置于ENV/lib/pythonX.X/site-packages中。
當前使用的python解釋器為ENV/bin/python。
激活與退出虛擬環境
激活命令:
$ source bin/activate
退出虛擬環境:
$ deactivate
刪除虛擬環境
退出虛擬環境后刪除目錄即可:
(ENV)$ deactivate$ rm -r /path/to/ENV
繼承全局python庫
使用以下命令可以創建繼承使用/usr/lib/python2.7/site-packages下的python全局庫的虛擬環境
virtualenv --system-site-packages ENV
不使用虛擬環境中的python解釋器
如果不想或者不能使用虛擬環境中的python解釋器bin/python,需要修改使用的python庫的路徑。
bin目錄下有一個文件 activate_this.py:
"""By using execfile(this_file, dict(__file__=this_file)) you willactivate this virtualenv environment.This can be used when you must use an existing Python interpreter, notthe virtualenv bin/python"""
更改路徑:
activate_this = '/path/to/env/bin/activate_this.py'execfile(activate_this, dict(__file__=activate_this))
生成可打包的環境
$ virtualenv --relocatable ENV
指定python版本
-p PYTHON_EXE, --python=PYTHON_EXE:指定生成的虛擬環境的python版本
virtualenv -p /usr/bin/python2.7 env
uwsgi中使用virtualenv
部署django項目時,可以使用uwsgi的幾個選項來指定項目使用的虛擬環境,--home,--virtualenv,--venv,--pyhome選項,都可簡寫為-H。
在uwsgi配置文件中添加 virtualenv = <path to env>或者運行命令時 $ uwsgi -H myenv。
新聞熱點
疑難解答