virtualenv詳解及使用virtualenv複製虛擬獨立的python環境(轉載)

版權聲明:本文爲轉載文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/poxiaonie/article/details/78820015
virtualenv 用來創建隔離的Python環境。

處理python環境的多版本和模塊依賴,以及相應的權限是一個很常見的問題。比如,你有個應用使用的是LibFoo V1.0,但另一個應用卻要用到LibFoo V2.0。 如何處理呢?如果把所有模塊都安裝到 /usr/lib/python2.7/site-packages (或是你本機python默認的模塊安裝目錄),那你極有可能無意中升級一些不該升級的模塊。

更普遍的是,就算你成功安裝了某個應用,那麼接下來又會怎樣?只要它開始運行了,那麼只要其所依賴的模塊發生任何改動,亦或升級,都可能打斷該應用。這還沒完,要是你無法在 site-packages 目錄下安裝模塊呢?比如共享主機。上述這幾種場合都適用 virtualenv 。它會創建一個擁有獨立安裝目錄的python環境,該隔離環境不會與其他virtualenv環境共享模塊(可選擇是否訪問全局庫目錄)。

一、安裝

運行

 pip install virtualenv 
1
即可安裝virtualenv,想用 最新開發版 就運行

pip install virtualenv==dev
1
還可以用 easy_install 安裝,即使是沒有安裝任何Python包管理器,也可以直接獲取 virtualenv.py 並運行 python virtualenv.py ,效果一樣。

二、 virtualenv基本使用

$ python virtualenv.py ENV
1
在已安裝virtualenv的情況下,可以直接運行 virtualenv ENV 。

該操作會創建 ENV/lib/pythonX.X/site-packages 目錄 和 ENV/bin/python , 前者用來存放要安裝的模塊,後者就是隔離環境的Python解釋器。 在virtualenv環境下使用此解釋器(包括以 #!/path/to/ENV/bin/python 開頭的腳本)時,使用的都是隔離環境下的模塊。 
該操作還在隔離環境下安裝了 Setuptools 或 distribute 。要用Distribue取代setuptools的話,只要運行:

$ python virtualenv.py --distribute ENV
1
選項:

--version
顯示當前版本號。
-h, --help
顯示幫助信息。
-v, --verbose
顯示詳細信息。
-q, --quiet
不顯示詳細信息。
-p PYTHON_EXE, --python=PYTHON_EXE
指定所用的python解析器的版本,比如 --python=python2.5 就使用2.5版本的解析器創建新的隔離環境。 默認使用的是當前系統安裝(/usr/bin/python)的python解析器
--clear
清空非root用戶的安裝,並重頭開始創建隔離環境。
--no-site-packages
令隔離環境不能訪問系統全局的site-packages目錄。
--system-site-packages
令隔離環境可以訪問系統全局的site-packages目錄。
--unzip-setuptools
安裝時解壓Setuptools或Distribute
--relocatable
重定位某個已存在的隔離環境。使用該選項將修正腳本並令所有.pth文件使用相當路徑。
--distribute
使用Distribute代替Setuptools,也可設置環境變量VIRTUALENV_DISTRIBUTE達到同樣效要。
--extra-search-dir=SEARCH_DIRS
用於查找setuptools/distribute/pip發佈包的目錄。可以添加任意數量的–extra-search-dir路徑。
--never-download
禁止從網上下載任何數據。此時,如果在本地搜索發佈包失敗,virtualenv就會報錯。
--prompt==PROMPT
定義隔離環境的命令行前綴。
環境變量和配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
三、激活腳本

剛創建的隔離環境下會有一個 bin/activate 命令行腳本。在Windows下,激活腳本要在CMD.exe或Powershell.exe中使用。

$ source bin/activate
1
注意到命令提示符變了,有個(venv)前綴,表示當前環境是一個名爲venv的Python環境。在venv環境下,用pip安裝的包都被安裝到venv這個環境下,系統Python環境不受任何影響。也就是說,venv環境是專門針對myproject這個應用創建的。 
退出當前的venv環境,使用deactivate命令;

四、虛擬環境複製遷移

直接壓縮生成的venv文件夾:

tar -zcvf venv.tar.gz ./venv
1
然後拷貝遷移至其他服務器下進行解壓: 
進入./venv/bin/下修改activate文件中參數:

VIRTUAL_ENV="/home/venv"
export VIRTUAL_ENV
1
2
將上述VIRTUAL_ENV修改爲當前venv文件夾正確的路徑,然後執行:

source activate
1
然後執行:

which python
或者
which pip
1
2
3
查看是否是虛擬venv路徑下的工具,如果是的話,則成功。


————————————————
版權聲明:本文爲CSDN博主「haughty_xiao」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/poxiaonie/article/details/78820015

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章