首頁 > Python教程 > Python基礎教程 > Python入門教程之虛擬環境和包

Python入門教程之虛擬環境和包

時間:2019-08-21    來源:互聯網

12. 虛擬環境和包

12.1. 簡介

Python 應用程序經常會使用一些不屬于標準庫的包和模塊。應用程序有時候需要某個特定版本的庫,因為它需要一個特定的 bug 已得到修復的庫或者它是使用了一個過時版本的庫的接口編寫的。

這就意味著可能無法安裝一個 Python 來滿足每個應用程序的要求。如果應用程序 A 需要一個特定模塊的 1.0 版本但是應用程序 B 需要該模塊的 2.0 版本,這兩個應用程序的要求是沖突的,安裝版本 1.0 或者版本 2.0 將會導致其中一個應用程序不能運行。

這個問題的解決方案就是創建一個 虛擬環境 (通常簡稱為 “virtualenv”),包含一個特定版本的 Python,以及一些附加的包的獨立的目錄樹。

不同的應用程序可以使用不同的虛擬環境。為了解決前面例子中的沖突,應用程序 A 可以有自己的虛擬環境,其中安裝了特定模塊的 1.0 版本。而應用程序 B 擁有另外一個安裝了特定模塊 2.0 版本的虛擬環境。如果應用程序 B 需求一個庫升級到 3.0 的話,這也不會影響到應用程序 A 的環境。

12.2. 創建虛擬環境

用于創建和管理虛擬環境的腳本叫做 pyvenvpyvenv 通常會安裝你可用的 Python 中最新的版本。這個腳本也能指定安裝一個特定的版本的 Python,因此如果在你的系統中有多個版本的 Python 的話,你可以運行 pyvenv-3.5 或者你想要的任何版本來選擇一個指定的 Python 版本。

要創建一個 virtualenv,首先決定一個你想要存放的目錄接著運行 pyvenv 后面攜帶著目錄名:

 pyvenv tutorial-env  

如果目錄不存在的話,這將會創建一個 tutorial-env 目錄,并且也在目錄里面創建一個包含 Python 解釋器,標準庫,以及各種配套文件的 Python “副本”。

一旦你已經創建了一個虛擬環境,你必須激活它。

在 Windows 上,運行:

 tutorial-env/Scripts/activate  

在 Unix 或者 MacOS 上,運行:

 source tutorial-env/bin/activate  

(這個腳本是用 bash shell 編寫的。如果你使用 csh 或者 fish shell,你應該使用 activate.csh 和 activate.fish 來替代。)

激活了虛擬環境會改變你的 shell 提示符,顯示你正在使用的虛擬環境,并且修改了環境以致運行 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 管理包

一旦你激活了一個虛擬環境,可以使用一個叫做 pip 程序來安裝,升級以及刪除包。默認情況下 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 novas    Downloading novas-3.1.1.3.tar.gz (136kB)  Installing collected packages: novas    Running setup.py install for novas  Successfully installed novas-3.1.1.3  

你也能安裝一個指定版本的包,通過給出包名后面緊跟著 == 和版本號:

 -> pip install requests==2.6.0  Collecting requests==2.6.0    Using cached requests-2.6.0-py2.py3-none-any.whl  Installing collected packages: requests  Successfully installed requests-2.6.0  

如果你重新運行命令(pip install requests==2.6.0),pip 會注意到要求的版本已經安裝,不會去做任何事情。你也可以提供一個不同的版本號來安裝,或者運行 pip install --upgrade 來升級包到最新版本:

 -> pip install --upgrade requests  Collecting requests  Installing collected packages: requests    Found existing installation: requests 2.6.0      Uninstalling requests-2.6.0:        Successfully uninstalled requests-2.6.0  Successfully installed requests-2.7.0  

pip uninstall 后跟一個或者多個包名將會從虛擬環境中移除這些包。

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: [email protected]  License: Apache 2.0  Location: /Users/akuchling/envs/tutorial-env/lib/python3.4/site-packages  Requires:  

pip list 將會列出所有安裝在虛擬環境中的包:

 (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.0  

requirements.txt 能夠被提交到版本控制中并且作為一個應用程序的一部分。用戶們可以使用 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, requests    Running setup.py install for novas  Successfully installed novas-3.1.1.3 numpy-1.9.2 requests-2.7.0  

pip 還有更多的選項。請參考 installing-index 指南獲取關于 pip 完整的文檔。當你編寫一個包并且在 Python Package Index 中也出現的話,請參考 distributing-index 指南。

 

相關推薦
Python入門教程之標準庫瀏覽 – Part II
Python入門簡介 Python能做什么?
調用Python 解釋器 什么是Python 解釋器?
Python3 簡介
Python入門教程之流程控制
Python入門教程之數據結構
Python入門教程之模塊
Python入門教程之輸入和輸出
Python入門教程之錯誤和異常處理
Python入門教程之類
Python入門教程之標準庫概覽
Python入門教程之浮點數算法:爭議和限制

精彩推薦

熱門教程

忍者法宝试玩
上海时时乐 微信红包棋牌游戏 娱网棋牌官方版 彩票返点是什么意思 麻将外挂作弊器免费 1000炮捕鱼机价格 极速飞艇开奖记录 福建31选7附加玩法 甘肃快三 快乐飞艇走势图 龙井说唱很赚钱吗 贵州快三 北单比分奖金计算 西游争霸之决战天下 迅雷赚钱宝怎么设置路由器 7星彩