0X00 安裝環境
我們在Python開發和學習過程中需要用到各種庫,然后在各個不同的項目和作品里可能用的版本還不一樣,正因為有這種問題的存在才催生了virtualenv
的誕生。virtualenv可以在電腦上創建一個虛擬環境,可以針對每一個項目創建一個虛擬環境,這樣就不用擔心各個不同的項目用不同版本的庫的時候出現的沖突了。 ** 下面的內容只適用於Linux/OSX,未經Windows環境測試 **
要使用這個功能還是需要安裝,安裝virtualenv肯定就得直接用pip安裝了,pip install virtualenv
就可以輕松裝上了。裝好之后我們就可以來測試一波了。
0X01 初始化一個空的工作環境
首先在一個空的環境中執行virtualenv --no-site-packages test_env
,就是在當前目錄創建一個名為test_env的虛擬環境。這里--no-site-packages
參數是指不從全局的Python中攜帶任何第三方庫。就比如說你在全局Python中安裝了xxx庫,在不用這個參數來創建虛擬環境時,虛擬環境中也會帶着這個庫;但是加上了這個參數,虛擬環境中就是一個純凈的Python,沒有這些庫。
root in ~ λ virtualenv --no-site-packages test_env
New python executable in /root/test_env/bin/python
Please make sure you remove any previous custom paths from your /root/.pydistutils.cfg file.
Installing setuptools, pip, wheel...done.
然后可以通過source test_env/bin/activate
可以進入(激活)到這個虛擬環境里去。進入到虛擬環境中之后,通常情況下你的命令提示符最前面會出現一個括號,括號里面寫着你虛擬環境的名字。
這里說是虛擬環境,其實一切都是真實的。只是說你在激活了這個環境,在這個環境下用pip安裝的庫都放在
test_env
中。
也可以通過deactivate
來退出這個環境。
0X02 批量導出和安裝庫
比如我們開發了一個項目,里面用到了pymongo/requests/flask/pymysql等等等等十幾二十個庫,還要指定特定的版本,那么當把一個項目從機器A遷移到機器B的時候就會很麻煩。需要手動記錄每個庫和版本,還要逐個去安裝,非常麻煩。所以針對這個問題pip已經有了非常完善的解決方案。
(test_env) root in ~ λ pip freeze > requirements.txt # 導出已安裝的庫
這個命令可以導出當前環境中安裝好的所有第三方庫,並且是以一個標准的格式導出的。所以一般一個標准的python項目的根目錄都會有這個名為requirements.txt
的依賴文件。
既然可以一次性導出,那么必然可以一次性安裝嘍。通過這種方式就可以將上面導出的特定版本的所有庫一次性全裝上。配合virtualenv可以快速的部署一個Python項目,並且不會搞亂其他的Python項目環境。
(test_env_1) root in ~ λ pip install -r requirements.txt