NumPy 安裝

2021-11-06 17:33 更新

安裝 NumPy 的唯一先決條件是 Python 本身。如果你還沒有 Python 并且想要以最簡(jiǎn)單的方式開始,我們建議使用?Anaconda Distribution?- 它包括 Python、NumPy 和許多其他用于科學(xué)計(jì)算和數(shù)據(jù)科學(xué)的常用包。

NumPy 可以通過conda、pip、 macOS 和 Linux 上的包管理器安裝,或者從來(lái)源處安裝。有關(guān)更詳細(xì)的說明,請(qǐng)參閱下面的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 時(shí),最好使用虛擬環(huán)境 - 請(qǐng)參閱下面的可重復(fù)安裝了解有關(guān)使用虛擬環(huán)境的詳細(xì)信息。

Python 和 NumPy 安裝指南

在 Python 中安裝和管理包很復(fù)雜,對(duì)于大多數(shù)任務(wù),有許多替代解決方案。本指南將會(huì)幫助讀者了解最佳(或最受歡迎)的解決方案,并給出明確的建議。它側(cè)重于Python、NumPyPyData(或數(shù)值計(jì)算)堆棧在常見操作系統(tǒng)和硬件上的用戶。

建議

我們將從基于用戶體驗(yàn)水平和感興趣的操作系統(tǒng)的建議開始。如果您介于“初級(jí)”和“高級(jí)”之間,且您只是要簡(jiǎn)單的了解一下,請(qǐng)選擇“初級(jí)”;如果您想根據(jù)未來(lái)走得更遠(yuǎn)的最佳實(shí)踐工作,請(qǐng)選擇“高級(jí)”。

初級(jí)用戶

在所有 Windows、macOS 和 Linux 上:

  • 安裝Anaconda(它會(huì)安裝您需要的所有軟件包以及下面提到的所有其他工具)。
  • 對(duì)于編寫和執(zhí)行代碼,在JupyterLab 中使用 notebooks?進(jìn)行探索性和交互式計(jì)算,使用?SpyderVisual Studio Code?編寫腳本和包。
  • 使用Anaconda Navigator管理您的包并啟動(dòng) JupyterLab、Spyder 或 Visual Studio Code。

高級(jí)用戶

Windows 或 macOS

  • 安裝Miniconda。
  • 保持base最小的conda 環(huán)境,并使用一個(gè)或多個(gè)?conda 環(huán)境來(lái)安裝您正在處理的任務(wù)或項(xiàng)目所需的包。
  • 除非您只對(duì)defaults頻道中的軟件包感到滿意,否則請(qǐng)通過conda-forge?設(shè)置頻道優(yōu)先級(jí)來(lái)設(shè)置您的默認(rèn)頻道。

Linux

如果你覺得稍微過時(shí)的軟件包沒問題,并且更喜歡穩(wěn)定性,可以不用直接去使用最新版本的庫(kù):

  • 盡可能多地使用你的操作系統(tǒng)包管理器(Python 本身、NumPy 和其他庫(kù))。
  • 使用pip install somepackage --user.

如果使用 GPU:

  • 安裝Miniconda。
  • 保持base最小的conda 環(huán)境,并使用一個(gè)或多個(gè)?conda 環(huán)境?來(lái)安裝您正在處理的任務(wù)或項(xiàng)目所需的包。
  • 使用defaultsconda 通道(conda-forge對(duì) GPU 包還沒有很好的支持)。

Python 包管理

管理包是一個(gè)具有挑戰(zhàn)性的問題,因此有很多工具。對(duì)于 Web 和通用 Python 開發(fā),有大量與 pip 互補(bǔ)的工具。對(duì)于高性能計(jì)算(HPC),?Spack 值得考慮。不過對(duì)于大多數(shù) NumPy 用戶來(lái)說,conda 和?pip 是兩個(gè)最流行的工具。

pip 和 conda

安裝 Python 包的兩個(gè)主要工具是 pipconda。它們的功能部分重疊(例如,兩者都可以安裝numpy),但是,它們也可以一起工作。我們將在這里討論 pipconda 之間的主要區(qū)別 。如果想有效地管理包,這對(duì)于理解這一點(diǎn)很重要。

第一個(gè)區(qū)別是 conda 是跨語(yǔ)言的,它可以安裝 Python,而 pip 是為系統(tǒng)上的特定 Python 安裝的,并且僅將其他軟件包安裝到同一個(gè) Python 安裝中。這也意味著 conda 可以安裝您可能需要的非 Python 庫(kù)和工具(例如編譯器、CUDA、HDF5),而 pip 不能。

第二個(gè)區(qū)別是 pip 從 Python Packaging Index (PyPI) 安裝,而 conda 從它自己的渠道安裝(通常是“defaults”或“conda-forge”)。PyPI 是迄今為止最大的軟件包集合,但是,所有流行的軟件包也可用于 conda。

第三個(gè)區(qū)別是 conda 是用于管理包、依賴項(xiàng)和環(huán)境的集成解決方案,而使用 pip 您可能需要另一個(gè)工具(有很多!)來(lái)處理環(huán)境或復(fù)雜的依賴項(xiàng)。

選擇 pip/PyPI

對(duì)于那些從個(gè)人喜好或者了解了上面關(guān)于 conda 和 pip 之間的主要區(qū)別,確定自己更喜歡基于 pip/PyPI 的解決方案的用戶,我們建議:

  • python.org、?Homebrew或您的 Linux 包管理器安裝 Python?。
  • 使用 Poetry 作為維護(hù)最良好的工具,它以與 conda 類似的方式提供依賴項(xiàng)解析器和環(huán)境管理功能。

可重復(fù)安裝

隨著庫(kù)的更新,運(yùn)行代碼的結(jié)果可能會(huì)發(fā)生變化,或者您的代碼可能會(huì)完全中斷。能夠重建您正在使用的軟件包和版本集非常重要。最佳做法是:

  1. 為您正在處理的每個(gè)項(xiàng)目使用不同的環(huán)境,
  2. 使用您的軟件包安裝程序記錄軟件包名稱和版本;

每個(gè)都有自己的元數(shù)據(jù)格式:

  • Conda:conda 環(huán)境和 environment.yml
  • Pip:虛擬環(huán)境和?requirements.txt
  • Poetry:虛擬環(huán)境和 pyproject.toml

NumPy 包和加速線性代數(shù)庫(kù)

NumPy 不依賴于任何其他 Python 包,但是,它依賴于加速線性代數(shù)庫(kù),通常是?Intel MKL或?OpenBLAS。用戶不必?fù)?dān)心安裝這些(它們會(huì)自動(dòng)包含在所有 NumPy 安裝方法中)。高級(jí)用戶可能仍然想知道詳細(xì)信息,因?yàn)槭褂玫?BLAS 會(huì)影響磁盤上的性能、行為和大?。?/p>

  • pip 安裝的 PyPI 上的 NumPy 輪子是使用 OpenBLAS 構(gòu)建的。OpenBLAS 庫(kù)包含在輪子中。這使得輪子更大,如果用戶也安裝(例如)SciPy,他們現(xiàn)在將在磁盤上擁有 OpenBLAS 的兩個(gè)副本。
  • 在 conda 默認(rèn)通道中,NumPy 是針對(duì) Intel MKL 構(gòu)建的。MKL 是一個(gè)單獨(dú)的包,將在用戶安裝 NumPy 時(shí)安裝在用戶的環(huán)境中。
  • 在 conda-forge 頻道中,NumPy 是針對(duì)虛擬的“BLAS”包構(gòu)建的。當(dāng)用戶從 conda-forge 安裝 NumPy 時(shí),該 BLAS 包將與實(shí)際庫(kù)一起安裝 - 這默認(rèn)為 OpenBLAS,但它也可以是 MKL(來(lái)自默認(rèn)通道),甚至?BLIS或參考 BLAS。
  • MKL 包比 OpenBLAS 大很多,它在磁盤上大約有 700 MB,而 OpenBLAS 大約有 30 MB。
  • MKL 通常比 OpenBLAS 更快、更健壯。

除了安裝尺寸、性能和穩(wěn)健性之外,還有兩件事情需要考慮:

  • 英特爾 MKL 不是開源的。對(duì)于正常使用,這不是問題,但如果用戶需要重新分發(fā)使用 NumPy 構(gòu)建的應(yīng)用程序,這可能是一個(gè)問題。
  • MKL 和 OpenBLAS 都將使用多線程進(jìn)行函數(shù)調(diào)用,如?np.dot,線程數(shù)由構(gòu)建時(shí)選項(xiàng)和環(huán)境變量決定。通常會(huì)使用所有 CPU 內(nèi)核。這有時(shí)對(duì)用戶來(lái)說是意料之外的;NumPy 本身不會(huì)自動(dòng)并行化任何函數(shù)調(diào)用。它通常會(huì)產(chǎn)生更好的性能,但也可能是有害的——例如,當(dāng)使用 Dask、scikit-learn 或多處理的另一個(gè)級(jí)別的并行化時(shí)。

故障排除

如果安裝失敗并顯示以下消息,請(qǐng)參閱疑難解答 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.
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)