翻譯:《實用的Python編程》09_02_Third_party

目錄 | 上一節 (9.1 包) | 下一節 (9.3 版本分發)

9.2 第三方模塊

Python 擁有一個包含各種內置模塊的大型庫(自帶電池(batteries included))(譯註:「自帶電池」來自於官方文檔的翻譯,意為「功能齊全」)。

甚至還有很多第三方模塊(可以使用)。請到 Python 包索引( PyPi ) 查看,或者使用谷歌搜索特定主題。

對於 Python 而言,如何處理第三方依賴關係是一個不斷演化的主題。本節僅僅涵蓋一些基礎知識,幫助你了解它們是如何工作的。

模塊搜索路徑

sys.path 是一個列表,包含所有 import 語句要檢查的目錄。查看 sys.path

>>> import sys
>>> sys.path
... look at the result ...
>>>

如果導入的內容不在目錄中。那麼將會觸發 ImportError 異常。

標準庫模塊

Python 標準庫中的模塊通常來自於 `/usr/local/lib/python3.6′ 之類的位置。可以通過一個簡短的測試來確定模塊來自於哪裡:

>>> import re
>>> re
<module 're' from '/usr/local/lib/python3.6/re.py'>
>>>

在交互式解釋器(REPL)中查看模塊的位置是一個很好的調試技巧。交互式解釋器將會顯示模塊所在的位置。

第三方模塊

第三方模塊通常位於專門的目錄 site-packages 中。如果執行與上述相同的步驟,可以看到第三方模塊所在的位置:

>>> import numpy
>>> numpy
<module 'numpy' from '/usr/local/lib/python3.6/site-packages/numpy/__init__.py'>
>>>

同樣,如果要弄清楚導入的第三方模塊為什麼沒有像預期那樣工作,那麼查看模塊的位置是一個很好的調試技巧。

安裝模塊

安裝第三方模塊最常用的技術是使用 pip。示例:

bash % python3 -m pip install packagename

此命令會下載包並將包安裝到 site-packages 目錄中。

問題

  • 你可能正在使用你不能直接控制的 Python。
    • 企業認可的 Python
    • 操作系統自帶的 Python
  • 你可能沒有權限在計算機中安裝全局包
  • 可能還有其它依賴

虛擬環境

對於包安裝問題,一個常見的解決方案是為自己創建所謂的「虛擬環境」。自然,創建虛擬環境的方式不止這一種——實際上,有好幾種相互競爭的工具和技術。如果你正在使用標準方式安裝的 Python,可以嘗試輸入以下代碼創建虛擬環境:

bash % python -m venv mypython
bash %

稍等片刻後,你將擁有一個新目錄 mypython,該目錄安裝了你自己的 Python。在 mypython 目錄中,可以找到 bin/ 目錄(Unix 系統)或者 Scripts/ 目錄(Windows 系統)。運行 bin/ 目錄下的 activate 腳本會「激活「 對應的 Python,使其成為 shell 的默認 python 命令。示例:

bash % source mypython/bin/activate
(mypython) bash %

現在,你可以從這裡開始安裝自己的 Python 包了。示例:

(mypython) bash % python -m pip install pandas
...

通常,為了試驗和試用不同的包,可以使用虛擬環境。另一方面,如果你正在創建一個應用並且它有特定的包依賴關係,那麼問題會稍有不同。

處理應用中的第三方依賴

如果你已經編寫了一個應用,並且該應用具有特定的第三方依賴,那麼創建並保存一個包括你自己的代碼及其依賴的環境將會是一個挑戰。可悲的是,這一直是一個非常混亂和頻繁變化的領域。即使到現在,它仍在繼續演變。

我不想向你提供必定會過時的信息,建議查閱 Python 打包用戶指南

練習

練習 9.4:創建虛擬環境

看看你是否可以像上面一樣創建一個虛擬環境並在虛擬環境中安裝 pandas。

目錄 | 上一節 (9.1 包) | 下一節 (9.3 版本分發)

註:完整翻譯見 //github.com/codists/practical-python-zh