Python学习笔记:虚拟环境和包
本文來自:入門指南
開胃菜參考:開胃菜
使用Python解釋器:使用Python解釋器
本文對Python的簡介:Python 簡介
Python流程介紹:深入Python 流程
Python數(shù)據(jù)結(jié)構(gòu):Python 數(shù)據(jù)結(jié)構(gòu)
Python:模塊:Python 模塊
Python:輸入和輸出Python 輸入和輸出
Python:錯誤和異常Python 錯誤和異常
Python:類Python:類
Python:標(biāo)準(zhǔn)庫預(yù)覽Python:標(biāo)準(zhǔn)庫預(yù)覽
Python:標(biāo)準(zhǔn)庫預(yù)覽2Python:標(biāo)準(zhǔn)庫預(yù)覽2
#12. 虛擬環(huán)境和包
##12.1. 簡介
Python 應(yīng)用程序經(jīng)常會使用一些不屬于標(biāo)準(zhǔn)庫的包和模塊。應(yīng)用程序有時候需要某個特定版本的庫,因?yàn)樗枰粋€特定的 bug 已得到修復(fù)的庫或者它是使用了一個過時版本的庫的接口編寫的。
這就意味著可能無法安裝一個 Python 來滿足每個應(yīng)用程序的要求。如果應(yīng)用程序 A 需要一個特定模塊的 1.0 版本但是應(yīng)用程序 B 需要該模塊的 2.0 版本,這兩個應(yīng)用程序的要求是沖突的,安裝版本 1.0 或者版本 2.0 將會導(dǎo)致其中一個應(yīng)用程序不能運(yùn)行。
這個問題的解決方案就是創(chuàng)建一個 虛擬環(huán)境 (通常簡稱為 “virtualenv”),包含一個特定版本的 Python,以及一些附加的包的獨(dú)立的目錄樹。
不同的應(yīng)用程序可以使用不同的虛擬環(huán)境。為了解決前面例子中的沖突,應(yīng)用程序 A 可以有自己的虛擬環(huán)境,其中安裝了特定模塊的 1.0 版本。而應(yīng)用程序 B 擁有另外一個安裝了特定模塊 2.0 版本的虛擬環(huán)境。如果應(yīng)用程序 B 需求一個庫升級到 3.0 的話,這也不會影響到應(yīng)用程序 A 的環(huán)境。
12.2. 創(chuàng)建虛擬環(huán)境
用于創(chuàng)建和管理虛擬環(huán)境的腳本叫做 pyvenv。pyvenv 通常會安裝你可用的 Python 中最新的版本。這個腳本也能指定安裝一個特定的版本的 Python,因此如果在你的系統(tǒng)中有多個版本的 Python 的話,你可以運(yùn)行 pyvenv-3.5 或者你想要的任何版本來選擇一個指定的 Python 版本。
要創(chuàng)建一個 virtualenv,首先決定一個你想要存放的目錄接著運(yùn)行 pyvenv 后面攜帶著目錄名:
pyvenv tutorial-env如果目錄不存在的話,這將會創(chuàng)建一個 tutorial-env 目錄,并且也在目錄里面創(chuàng)建一個包含 Python 解釋器,標(biāo)準(zhǔn)庫,以及各種配套文件的 Python “副本”。
一旦你已經(jīng)創(chuàng)建了一個虛擬環(huán)境,你必須激活它。
在 Windows 上,運(yùn)行:
tutorial-env/Scripts/activate在 Unix 或者 MacOS 上,運(yùn)行:
source tutorial-env/bin/activate(這個腳本是用 bash shell 編寫的。如果你使用 csh 或者 fish shell,你應(yīng)該使用 activate.csh 和 activate.fish 來替代。)
激活了虛擬環(huán)境會改變你的 shell 提示符,顯示你正在使用的虛擬環(huán)境,并且修改了環(huán)境以致運(yùn)行 python 將會讓你得到了特定的 Python 版本。例如:
-> source ~/envs/tutorial-env/bin/activate (tutorial-env) -> python Python 3.5.2+ (3.4:c7b9645a6f35+, May 22 2015, 09:31:25)... >>> import sys >>> sys.path ['', '/usr/local/lib/python35.zip', ..., '~/envs/tutorial-env/lib/python3.5/site-packages'] >>>##12.3. 使用 pip 管理包
一旦你激活了一個虛擬環(huán)境,可以使用一個叫做 pip 程序來安裝,升級以及刪除包。默認(rèn)情況下 pip 將會從 Python Package Index,https://pypi.python.org/pypi, 中安裝包。你可以通過 web 瀏覽器瀏覽它們,或者你也能使用 pip 有限的搜索功能:
(tutorial-env) -> pip search astronomy skyfield - Elegant astronomy for Python gary - Galactic astronomy and gravitational dynamics. novas - The United States Naval Observatory NOVAS astronomy library astroobs - Provides astronomy ephemeris to plan telescope observations PyAstronomy - A collection of astronomy related tools for Python.pip 有許多子命令:“搜索”,“安裝”,“卸載”,“freeze”(譯者注:這個詞語暫時沒有合適的詞語來翻譯),等等。(請參考 installing-index 指南獲取 pip 更多完整的文檔。)
你可以安裝一個包最新的版本,通過指定包的名稱:
-> pip install novas Collecting novasDownloading novas-3.1.1.3.tar.gz (136kB) Installing collected packages: novasRunning setup.py install for novas Successfully installed novas-3.1.1.3你也能安裝一個指定版本的包,通過給出包名后面緊跟著 == 和版本號:
-> pip install requests==2.6.0 Collecting requests==2.6.0Using cached requests-2.6.0-py2.py3-none-any.whl Installing collected packages: requests Successfully installed requests-2.6.0如果你重新運(yùn)行命令(pip install requests==2.6.0),pip 會注意到要求的版本已經(jīng)安裝,不會去做任何事情。你也可以提供一個不同的版本號來安裝,或者運(yùn)行 pip install --upgrade 來升級包到最新版本:
-> pip install --upgrade requests Collecting requests Installing collected packages: requestsFound existing installation: requests 2.6.0Uninstalling requests-2.6.0:Successfully uninstalled requests-2.6.0 Successfully installed requests-2.7.0pip uninstall 后跟一個或者多個包名將會從虛擬環(huán)境中移除這些包。
pip show 將會顯示一個指定的包的信息:
(tutorial-env) -> pip show requests --- Metadata-Version: 2.0 Name: requests Version: 2.7.0 Summary: Python HTTP for Humans. Home-page: http://python-requests.org Author: Kenneth Reitz Author-email: me@kennethreitz.com License: Apache 2.0 Location: /Users/akuchling/envs/tutorial-env/lib/python3.4/site-packages Requires:pip list 將會列出所有安裝在虛擬環(huán)境中的包:
(tutorial-env) -> pip list novas (3.1.1.3) numpy (1.9.2) pip (7.0.3) requests (2.7.0) setuptools (16.0)pip freeze 將會生成一個類似需要安裝的包的列表,但是輸出采用了 pip install 期望的格式。常見的做法就是把它們放在一個 requirements.txt 文件:
(tutorial-env) -> pip freeze > requirements.txt (tutorial-env) -> cat requirements.txt novas==3.1.1.3 numpy==1.9.2 requests==2.7.0requirements.txt 能夠被提交到版本控制中并且作為一個應(yīng)用程序的一部分。用戶們可以使用 install -r 安裝所有必須的包:
-> pip install -r requirements.txt Collecting novas==3.1.1.3 (from -r requirements.txt (line 1))... Collecting numpy==1.9.2 (from -r requirements.txt (line 2))... Collecting requests==2.7.0 (from -r requirements.txt (line 3))... Installing collected packages: novas, numpy, requestsRunning setup.py install for novas Successfully installed novas-3.1.1.3 numpy-1.9.2 requests-2.7.0pip 還有更多的選項(xiàng)。請參考 installing-index 指南獲取關(guān)于 pip 完整的文檔。當(dāng)你編寫一個包并且在 Python Package Index 中也出現(xiàn)的話,請參考 distributing-index 指南。
總結(jié)
以上是生活随笔為你收集整理的Python学习笔记:虚拟环境和包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习导论(张志华):随机向量性质
- 下一篇: android 菜鸟面单打印_1.0 A