Python:pip 使用指南



A) 關於 pip 安裝方式:




B) 常用方法

1. 檢查版本、安裝或更新一個套件

  • 檢查版本
1
2
3
pip --version
    
pip 19.2.3 from /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)
  • 安裝套件 (online)
1
pip install <package-name>
  • 安裝本機 wheel 檔 (.whl) 或壓縮檔 (.zip) [2]
1
2
3
4
5
6
7
8
9
# 安裝 wheel 檔
pip install /path/to/my/mypackage.whl
    
# 安裝 zip 檔
pip install /path/to/my/mypackage.zip
    
    
# 從 local file system 某檔案安裝、不解析相依性
pip install mypackage --no-index --find-links file:///path/to/my/mypackage
  • 升級套件 [3]
1
2
3
4
pip install --upgrade <package-name>
    
# 或是
pip install -U <package-name>
  • 移除套件
1
pip uninstall <package-name>

Note

  • 使用 pip 或是 python -m pip 都是可以的。主要的差別會在「升級 pip 的時候,需要 python -m pip install --upgrade pip」:因為升級的過程其實是「先刪除舊的 pip」 然後再「安裝新的」,所以如果純用指令會出現錯誤。而如果使用執行套件 (pip module) 安裝,因 pip 有在 __main__ 裡面寫好 script,所以執行時會暫存在記憶體裡,因而不受影響。
  • 常用 pip3 來安裝套件,主要是安裝 python 3 之後系統就會有兩個 Python (眾所皆知的 Python 2 & 3);文章中寫 pip 我實際上都用 pip3,主要看執行路徑或 alias 怎麼設定而已。有問題可以參考 pip 疑難雜症 (pip troubleshooting)

2. 確認套件相關資訊

  • 列出已安裝套件與其版本
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
pip list
    
    
Package            Version
------------------ ---------
certifi            2021.10.8
charset-normalizer 2.0.10
elasticsearch      7.16.3
idna               3.3
pip                21.3.1
requests           2.27.1
setuptools         60.5.0
urllib3            1.26.8
wheel              0.37.1

這個指令會在虛擬環境開發時很有用,幫助你檢查當前的環境到底安裝了哪些東西。

  • 查詢套件細節 (metadata)
1
pip show <package-name>

其中,結果的 requires 欄位會顯示跟此套件相依的套件。

  • 檢查是否有未安裝的相依套件
1
2
3
4
5
pip check
    
    
# 如果一切正常
No broken requirements found.
  • 匯出已安裝的套件版本清單
1
pip freeze

用此匯出的方式,可以在不同的環境快速轉移或更新已安裝的套件,這步的結果會在下一節用到。

  • 搜尋套件

目前 python.org 已移除「接收 pip search 搜尋套件請求」的 API,因為流量太大 [4],所以可能需要直接在 pypi.org 找,或下載其他搜尋套件。

e.g. pypi-simple-search or pipsearch.


3. 批次安裝大量套件

前面提到 pip freeze,我們可以利用這個匯出的結果直接當作批次安裝的 input。

  • 查看匯出結果
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
pip freeze > my_packages.txt
cat my_packages.txt
    
    
certifi==2021.10.8
charset-normalizer==2.0.10
elasticsearch==7.16.3
idna==3.3
requests==2.27.1
urllib3==1.26.8
  • 批次安裝
1
2
3
4
5
# 安裝清單列出的套件與版本
pip install -r my_packages.txt 

# 更新清單中的套件到對應版本
pip install --upgrade -r my_packages.txt



C) 進階設定檔

1. 設定檔 example

有的時候,如果 pip 使用的需求比較複雜一點,就可以借用設定檔的方式來簡化調整參數與維護的成本。

pip 可以讀取 pip.conf 裡面定義的參數,例如像這樣 [5]:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[global]
no-cache-dir = false
timeout = 60

[install]
no-compile = no
no-warn-script-location = false

[freeze]
timeout = 10
    

或是設定相關信任的站點

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[global]
find-links =
    http://download.example.com

[install]
find-links =
    http://mirror1.example.com
    http://mirror2.example.com

trusted-host =
    mirror1.example.com
    mirror2.example.com

2. 設定檔讀取順序

pip 設定檔中,有四個地方會依序讀取:

  1. 環境變數 PIP_CONFIG_FILE 指向的檔案
  2. Global: /etc/pip.conf
  3. User: $HOME/.pip/pip.conf$HOME/.config/pip/pip.conf
  4. Site: $VIRTUAL_ENV/pip.conf

由於是依序讀取,所以如果某些參數在之前的設定檔已定義,會被最下面的 Site 設定檔覆蓋。

可以依照自己開發的需求調整 pip 要套用的設定檔。


Note

  • Site 此階層,文件中的定義是

per-environment configuration file; i.e. per-virtualenv.

指的就是此開發環境用到的 pip.conf




D) Troubleshooting




REF

  1. https://realpython.com/what-is-pip/
  2. https://stackoverflow.com/questions/15031694/installing-python-packages-from-local-file-system-folder-to-virtualenv-with-pip
  3. https://note.nkmk.me/en/python-pip-usage/
  4. https://stackoverflow.com/questions/66375972/getting-error-with-pip-search-and-pip-install
  5. https://pip.pypa.io/en/stable/topics/configuration/
Licensed under CC BY-NC-SA 4.0
最後更新 2024-05-28 06:37

主題 StackJimmy 設計