Python開發者必讀:Pip使用全攻略與最佳實踐

2023-07-20 15:00:41

在這篇文章中,我們將深入探討Python的主要包管理工具——Pip。內容涵蓋了Pip的基本概念、安裝和設定、中國國內映象源的使用、包管理、與虛擬環境的關係、高階用法、問題解決。

1. 引言

在現代的軟體開發實踐中,依賴管理成為了一項非常重要的任務。它確保了我們可以在任何地方重建我們的開發環境,也使得我們能夠輕鬆地跟蹤和更新我們的專案所依賴的庫。Python是世界上最受歡迎的程式語言之一,有著豐富的庫和框架,這都得益於Python強大的包管理工具Pip。

Python的包管理器的重要性

Python的包管理器允許開發者下載、安裝、更新和管理Python包。這些包可以是第三方庫,如numpy和tensorflow,也可以是你自己開發的模組或包。包管理器簡化了獲取和管理這些資源的過程,使得開發者可以更加專注於開發工作。

例如,我們可以使用pip來安裝一個流行的Python庫numpy:

pip install numpy

此命令執行後,Pip會從Python Package Index (PyPI)下載numpy庫,並在當前環境中安裝。如果已經安裝了numpy,Pip還可以用於升級numpy到最新版本:

pip install --upgrade numpy

為什麼需要了解和使用Pip

理解並熟練使用Pip對於任何Python開發者來說都非常重要。Python社群已經開發了大量的有用的庫和框架,開發者通過Pip可以方便的下載和使用這些庫和框架。此外,使用Pip可以幫助開發者更好的管理他們的專案依賴,從而更有效地構建和維護他們的應用。

2. Pip的基本概念

為了深入理解和有效使用Pip,我們需要首先了解一些基本的概念。

什麼是Pip

Pip是Python的包管理器,它允許你安裝和管理額外的庫和依賴,這些庫和依賴未包含在Python標準庫中。Pip是遞迴的縮寫,其全名是「Pip Installs Packages」或者「Pip Installs Python」。除了Python外,Pip還可以用於其他一些Python的變體,例如PyPy。

Pip的主要功能如下:

  • 安裝Python包
  • 解除安裝Python包
  • 升級Python包
  • 檢視已安裝的Python包

例如,你可以使用下面的命令來安裝requests庫:

pip install requests

當你執行此命令後,Pip將從Python Package Index (PyPI)下載並安裝requests庫。

Pip的歷史和發展

Pip最初於2008年釋出,目的是提供一個用於安裝和管理Python包的統一介面。在Pip之前,Python社群的開發者使用各種不同的工具和方法來管理包,這導致了大量的混亂和重複工作。

Pip現在已經成為Python生態系統中最重要的工具之一。幾乎所有的現代Python專案都依賴Pip來管理它們的庫和依賴。此外,許多重要的Python工具,如virtualenv和pipenv,都是基於Pip構建的。

Pip與其他Python包管理工具的比較

雖然Pip是最常用的Python包管理器,但它並不是唯一的選擇。例如,conda也是一個非常流行的Python包管理器,尤其在資料科學和機器學習的領域。與Pip相比,conda可以更好地管理包版本和環境,但它的使用並不像Pip那麼普遍。

下面的命令展示了conda如何安裝numpy庫:

conda install numpy

無論選擇哪個包管理器,重要的是理解它的優點和限制,以及如何根據你的需求來選擇和使用合適的工具。

3. Pip的安裝和設定

儘管大多數現代Python發行版都已預裝了Pip,但在某些情況下,你可能需要手動安裝。這一部分將指導你如何在不同作業系統上安裝和設定Pip。

在不同作業系統上安裝Pip的方法

  • 在Windows上安裝Pip

    如果你正在使用Python3.4或更高版本,那麼Pip應該已經預裝在你的Python環境中。你可以通過下面的命令來驗證Pip是否已經安裝:

    python -m pip --version
    

    如果Pip未安裝,你可以通過下面的命令來安裝Pip:

    python get-pip.py
    
  • 在Linux上安裝Pip

    在大多數Linux發行版中,你可以使用包管理器來安裝Pip。例如,在Ubuntu中,你可以使用下面的命令來安裝Pip:

    sudo apt-get install python3-pip
    

    在CentOS中,你可以使用下面的命令來安裝Pip:

    sudo yum install python3-pip
    
  • 在macOS上安裝Pip

    在macOS中,你可以使用Homebrew來安裝Pip:

    brew install python3
    

    這個命令將會安裝Python3以及Pip。

Pip版本的檢查和升級

你可以使用下面的命令來檢查Pip的版本:

pip --version

如果你需要升級Pip,你可以使用下面的命令:

# On Linux or macOS
pip install --upgrade pip

# On Windows
python -m pip install --upgrade pip

Pip的基礎設定

Pip的行為可以通過命令列選項,環境變數,以及組態檔進行調整。最常用的設定是更改包的安裝源,例如,你可以通過下面的命令指定使用清華大學的PyPI映象源:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

此外,你也可以通過組態檔來永久更改Pip的預設源,具體方法將在後面的章節中詳細介紹。

以下是「中國國內多個映象源及使用方法」部分及其子單元的內容:

4. 國內多個映象源及使用方法

由於網路原因,國內使用者在從Python官方PyPI庫下載包時可能會遇到速度慢或連線失敗的問題。幸運的是,我們有多個國內的映象源可以使用,從而顯著提高下載速度和成功率。下面我們會列出一些常用的映象源,並展示如何使用它們。

常用的國內映象源

使用映象源的方法

使用映象源的方法非常簡單。在使用pip install命令時,新增-i選項 followed by the URL of the mirror source. 例如,下面的命令展示瞭如何使用清華大學的映象源來安裝numpy庫:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy

永久設定映象源

如果你希望永久使用某個映象源,你可以通過修改Pip的組態檔來實現。組態檔的位置取決於你的作業系統:

  • On Unix and macOS the configuration file is: $HOME/.pip/pip.conf
  • On Windows the configuration file is: %HOME%\pip\pip.ini

在組態檔中,你可以新增如下內容來永久設定使用清華大學的映象源:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

在設定好映象源後,你就可以像平時一樣使用pip install命令了,Pip將自動從你設定的映象源下載包。

5. 使用Pip進行包管理

Pip提供了一系列的命令,使得包管理變得十分方便。這部分將會詳細介紹這些命令的使用方法。

安裝包

你可以使用pip install命令來安裝包。例如,下面的命令展示瞭如何安裝numpy庫:

pip install numpy

你也可以指定要安裝的包的版本。例如,下面的命令展示瞭如何安裝numpy 1.18.5版本:

pip install numpy==1.18.5

解除安裝包

你可以使用pip uninstall命令來解除安裝包。例如,下面的命令展示瞭如何解除安裝numpy庫:

pip uninstall numpy

檢視已安裝的包

你可以使用pip list命令來檢視已安裝的包及其版本。例如,下面的命令展示瞭如何檢視已安裝的所有包:

pip list

你也可以使用pip show命令來檢視特定包的詳細資訊。例如,下面的命令展示瞭如何檢視numpy庫的詳細資訊:

pip show numpy

升級包

你可以使用pip install --upgrade命令來升級包。例如,下面的命令展示瞭如何升級numpy庫:

pip install --upgrade numpy

安裝特定環境的包

Pip還支援建立虛擬環境,然後在這個虛擬環境中安裝和管理包。這個功能非常有用,因為它可以避免包和依賴的版本衝突。例如,你可以使用下面的命令來建立一個名為myenv的虛擬環境,並在這個環境中安裝numpy庫:

python3 -m venv myenv
source myenv/bin/activate
pip install numpy

通過這種方式,你可以為每個專案建立一個單獨的虛擬環境,然後在這個環境中安裝和管理包,從而避免版本衝突的問題。

6. Pip和虛擬環境

虛擬環境可以幫助我們在不同的專案間隔離Python環境,避免因為包和依賴的版本不一致而導致的問題。這部分將會介紹如何使用Pip和venv來建立和管理虛擬環境。

建立虛擬環境

你可以使用venv模組來建立虛擬環境。例如,下面的命令展示瞭如何建立一個名為myenv的虛擬環境:

python3 -m venv myenv

這個命令將會在當前目錄下建立一個名為myenv的資料夾,這個資料夾包含了一個獨立的Python環境。

啟用虛擬環境

建立虛擬環境後,你需要啟用這個環境以在這個環境中安裝和使用包。在Unix和macOS中,你可以使用下面的命令來啟用虛擬環境:

source myenv/bin/activate

在Windows中,你可以使用下面的命令來啟用虛擬環境:

myenv\Scripts\activate

在虛擬環境中使用Pip

啟用虛擬環境後,你就可以像平常一樣使用Pip來安裝和管理包。這些包將只在當前的虛擬環境中可用。例如,下面的命令展示瞭如何在虛擬環境中安裝numpy庫:

pip install numpy

退出虛擬環境

當你完成了在虛擬環境中的工作後,你可以使用deactivate命令來退出虛擬環境:

deactivate

這個命令將會讓你回到系統的Python環境。

刪除虛擬環境

如果你不再需要一個虛擬環境,你可以簡單地刪除虛擬環境的資料夾來移除這個環境:

rm -rf myenv

7. Pip的高階用法

除了常規的安裝、解除安裝和升級包等操作,Pip還提供了一些高階的用法,如安裝特定版本的包、安裝預釋出版的包、安裝輪子檔案等。這部分將會介紹這些高階用法。

安裝特定版本的包

前面我們提到過,可以使用pip install <package>==<version>命令來安裝特定版本的包。你也可以使用>=<=><!=操作符來指定要安裝的包的版本。例如,下面的命令展示瞭如何安裝numpy庫的版本大於1.18.5的版本:

pip install numpy>=1.18.5

安裝預釋出版的包

預設情況下,Pip只會安裝正式釋出的包。但有時,你可能想要安裝預釋出版的包,比如為了測試新的功能。你可以使用--pre選項來安裝預釋出版的包。例如,下面的命令展示瞭如何安裝numpy庫的預釋出版:

pip install --pre numpy

安裝輪子檔案

輪子檔案是一種預編譯的包分發格式,它可以更快地安裝包。你可以使用pip install命令來安裝輪子檔案。例如,下面的命令展示瞭如何安裝一個名為numpy-1.21.2-cp39-cp39-win_amd64.whl的輪子檔案:

pip install numpy-1.21.2-cp39-cp39-win_amd64.whl

從GitHub倉庫安裝包

除了從PyPI庫安裝包,你也可以直接從GitHub倉庫安裝包。你只需要提供倉庫的URL。例如,下面的命令展示瞭如何從GitHub倉庫安裝numpy庫:

pip install git+https://github.com/numpy/numpy.git

8. Pip的問題解決

儘管Pip是一個非常強大和靈活的工具,但在使用過程中你可能會遇到一些問題。這部分將會介紹一些常見的問題以及它們的解決方法。

包安裝失敗

有時,你可能會遇到包安裝失敗的問題。這可能是由於多種原因造成的,如網路問題、依賴問題、相容性問題等。通常,你可以通過檢查錯誤訊息來找出問題的原因。例如,如果錯誤訊息提示某個依賴包找不到,那麼你可能需要先安裝那個依賴包。

pip install missing-package

包衝突

有時,你可能會遇到包衝突的問題,這通常是因為不同的包依賴了不同版本的同一個包。你可以使用pip check命令來檢查包衝突。如果存在衝突,你可能需要升級或降級一些包以解決衝突。

pip check

包解除安裝失敗

有時,你可能會遇到包解除安裝失敗的問題。這可能是因為包正在被使用,或者你沒有許可權解除安裝包。你可以嘗試使用pip uninstall -y <package>命令來強制解除安裝包。

pip uninstall -y problematic-package

包版本過舊

有時,你可能會遇到包版本過舊的問題。這通常是因為你的Pip版本過舊,不能安裝新版本的包。你可以使用pip install --upgrade pip命令來升級Pip。

pip install --upgrade pip

如有幫助,請多關注
個人微信公眾號:【Python全視角】
TeahLead_KrisChang,10+年的網際網路和人工智慧從業經驗,10年+技術和業務團隊管理經驗,同濟軟體工程本科,復旦工程管理碩士,阿里雲認證雲服務資深架構師,上億營收AI產品業務負責人。