安裝 NumPy

安裝 NumPy 唯一的前提是 Python 本身。如果您還沒有 Python,並且想要最簡單的入門方式,我們建議您使用 Anaconda 發行版 - 它包含了 Python、NumPy,以及許多其他常用於科學計算和資料科學的套件。

NumPy 可以使用 condapip、macOS 和 Linux 上的套件管理器安裝,或者從原始碼建置。如需更詳細的說明,請參閱下方的Python 和 NumPy 安裝指南

CONDA

如果您使用 conda,您可以從 defaultsconda-forge 頻道安裝 NumPy

# Best practice, use an environment rather than install in the base env
conda create -n my-env
conda activate my-env
# If you want to install from conda-forge
conda config --env --add channels conda-forge
# The actual install command
conda install numpy

PIP

如果您使用 pip,您可以使用以下指令安裝 NumPy

pip install numpy

另外,當使用 pip 時,最好使用虛擬環境 - 請參閱下方可重現的安裝章節,了解原因,以及本指南,了解使用虛擬環境的詳細資訊。

Python 和 NumPy 安裝指南#

在 Python 中安裝和管理套件很複雜,對於大多數任務,都有許多替代解決方案。本指南試圖讓讀者了解最佳(或最受歡迎的)解決方案,並提供明確的建議。它著重於在常見作業系統和硬體上使用 Python、NumPy 和 PyData(或數值計算)堆疊的使用者。

建議#

我們將從基於使用者經驗水平和感興趣的作業系統的建議開始。如果您介於「初學者」和「進階使用者」之間,如果您想保持簡單,請選擇「初學者」,如果您想根據更長遠的最佳實踐工作,請選擇「進階使用者」。

初學者使用者#

在所有 Windows、macOS 和 Linux 上

  • 安裝 Anaconda(它會安裝您需要的所有套件以及下方提到的所有其他工具)。
  • 對於編寫和執行程式碼,在 JupyterLab 中使用筆記本進行探索性和互動式計算,並使用 SpyderVisual Studio Code 編寫腳本和套件。
  • 使用 Anaconda Navigator 管理您的套件並啟動 JupyterLab、Spyder 或 Visual Studio Code。

進階使用者#

Conda#

  • 安裝 Miniforge
  • 保持 base conda 環境最小化,並使用一個或多個 conda 環境 來安裝您正在處理的任務或專案所需的套件。

如果您偏好 pip/PyPI 的替代方案#

對於那些從個人偏好或閱讀以下 conda 和 pip 之間的主要差異後,知道他們更喜歡基於 pip/PyPI 的解決方案的使用者,我們建議

  • python.orgHomebrew 或您的 Linux 套件管理器安裝 Python。
  • 使用 Poetry 作為維護最完善的工具,它以類似於 conda 的方式提供依賴項解析器和環境管理功能。

Python 套件管理#

管理套件是一個具有挑戰性的問題,因此,出現了許多工具。對於網路和通用 Python 開發,有許多與 pip 互補的 工具。對於高效能計算 (HPC),Spack 值得考慮。但對於大多數 NumPy 使用者來說,condapip 是兩種最受歡迎的工具。

Pip & conda#

安裝 Python 套件的兩個主要工具是 pipconda。它們的功能部分重疊(例如,兩者都可以安裝 numpy),但是,它們也可以協同工作。我們將在此討論 pip 和 conda 之間的主要差異 - 如果您想有效地管理套件,這點非常重要。

第一個差異是 conda 是跨語言的,它可以安裝 Python,而 pip 是針對您系統上的特定 Python 安裝的,並且僅將其他套件安裝到同一個 Python 安裝中。這也意味著 conda 可以安裝您可能需要的非 Python 函式庫和工具(例如,編譯器、CUDA、HDF5),而 pip 則不能。

第二個差異是 pip 從 Python Packaging Index (PyPI) 安裝,而 conda 從其自己的頻道(通常是「defaults」或「conda-forge」)安裝。PyPI 是迄今為止最大的套件集合,但是,所有流行的套件也都可以用於 conda。

第三個差異是 conda 是一個用於管理套件、依賴項和環境的整合解決方案,而使用 pip,您可能需要另一個工具(有很多!)來處理環境或複雜的依賴項。

可重現的安裝#

隨著函式庫更新,執行程式碼的結果可能會改變,或者您的程式碼可能會完全崩潰。能夠重建您正在使用的套件和版本集非常重要。最佳實踐是

  1. 為您正在處理的每個專案使用不同的環境,
  2. 使用您的套件安裝程式記錄套件名稱和版本;每個安裝程式都有自己的元資料格式

NumPy 套件 & 加速線性代數函式庫#

NumPy 不依賴任何其他 Python 套件,但是,它確實依賴於加速線性代數函式庫 - 通常是 Intel MKLOpenBLAS。使用者不必擔心安裝這些函式庫(它們會自動包含在所有 NumPy 安裝方法中)。進階使用者可能仍然想了解詳細資訊,因為使用的 BLAS 會影響效能、行為和磁碟空間大小

  • PyPI 上的 NumPy wheels,也就是 pip 安裝的內容,是使用 OpenBLAS 建置的。OpenBLAS 函式庫包含在 wheel 中。這使得 wheel 更大,如果使用者也安裝了(例如)SciPy,他們現在將在磁碟上有兩個 OpenBLAS 副本。

  • 在 conda defaults 頻道中,NumPy 是針對 Intel MKL 建置的。MKL 是一個獨立的套件,當使用者安裝 NumPy 時,它將安裝在使用者的環境中。

  • 在 conda-forge 頻道中,NumPy 是針對虛擬的「BLAS」套件建置的。當使用者從 conda-forge 安裝 NumPy 時,該 BLAS 套件將與實際的函式庫一起安裝 - 這預設為 OpenBLAS,但也可以是 MKL(來自 defaults 頻道),甚至可以是 BLIS 或參考 BLAS。

  • MKL 套件比 OpenBLAS 大得多,它在磁碟上約為 700 MB,而 OpenBLAS 約為 30 MB。

  • MKL 通常比 OpenBLAS 快一點且更穩健。

除了安裝大小、效能和穩健性之外,還有兩件事需要考慮

  • Intel MKL 不是開放原始碼。對於正常使用來說,這不是問題,但如果使用者需要重新發布使用 NumPy 建置的應用程式,這可能會成為一個問題。
  • MKL 和 OpenBLAS 都將使用多執行緒進行函式呼叫,例如 np.dot,執行緒數量由建置時選項和環境變數決定。通常會使用所有 CPU 核心。這對使用者來說有時是意想不到的;NumPy 本身不會自動並行化任何函式呼叫。它通常會產生更好的效能,但也可能有害 - 例如,當使用 Dask、scikit-learn 或多進程進行另一層並行化時。

疑難排解#

如果您的安裝失敗並顯示以下訊息,請參閱疑難排解 ImportError

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy c-extensions failed. This error can happen for
different reasons, often due to issues with your setup.
在本頁面上