匯入錯誤:無法匯入名稱“multiarray”

匯入錯誤:無法匯入名稱“multiarray”

我按照描述安裝了Python3.6這裡

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

然後我安裝了 numpy,如下所示:

sudo apt-get install python3-numpy

我想我可以從Python3.5導入numpy,但不能從Python3.6導入numpy

Python 3.6.5 (default, Mar 29 2018, 03:28:50) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/numpy/__init__.py", line 180, in <module>
    from . import add_newdocs
  File "/usr/lib/python3/dist-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/usr/lib/python3/dist-packages/numpy/lib/__init__.py", line 8, in <module>
    from .type_check import *
  File "/usr/lib/python3/dist-packages/numpy/lib/type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "/usr/lib/python3/dist-packages/numpy/core/__init__.py", line 14, in <module>
    from . import multiarray
ImportError: cannot import name 'multiarray'

如何解決這個問題?

答案1

您可能numpy只安裝了 python3.5。

您可以嘗試安裝numpy和使用pip.
這是python的套件管理器。您可以使用它來安裝各種 python 庫,例如numpy.
然後用它來安裝numpy你的python3.6。

安裝 pip

pip使用以下命令安裝:

apt install python-pip

筆記:您可能會收到Permission denied錯誤。在這種情況下,只需在命令前面加上sudo例如:

sudo apt install python-pip

然後在終端機中輸入pip3.6以檢查是否已正確安裝。它應該列出所有可用的參數。

這裡通常有兩種選擇。

選項 1 -numpy全域安裝

專門為python3.6安裝numpy

pip3.6 install numpy

筆記:同樣,如果您收到權限錯誤,請在命令前面加上以下前綴sudo

sudo pip3.6 install numpy

輸出:

Collecting numpy
  Downloading https://files.pythonhosted.org/packages/71/90/ca61e203e0080a8cef7ac21eca199829fa8d997f7c4da3e985b49d0a107d/numpy-1.14.3-cp36-cp36m-manylinux1_x86_64.whl (12.2MB)
    100% |################################| 12.2MB 1.9MB/s 
Installing collected packages: numpy
Successfully installed numpy-1.14.3

筆記:這種方法的缺點是你已經numpy全域安裝了,這可能會在將來的某個時候產生不良影響,例如不同版本的問題。

選項 2 - 使用虛擬環境:

此方法可讓您建立一個隔離的 Python 環境,如果您願意的話,可以是一個沙箱,您可以在其中安裝 python 包,而不必過多擔心依賴項、版本和權限。

首先,您需要安裝建立虛擬環境所需的模組:

sudo pip3.6 install virtualenv

再次檢查是否安裝成功:

virtualenv --version

應列印沒有任何錯誤訊息的版本。

現在為 python3.6 建立一個虛擬環境(僅供參考 - 有多種方法可以實現):

virtualenv /directory/to/place/the/virtual/environment

例如

virtualenv ~/Documents/numpy

導航到該目錄。裡面應該有幾個目錄。我們正在尋找bin目錄。
現在您需要啟動該虛擬環境:

source bin/activate

虛擬環境的名稱應顯示在終端的左側,例如:

(numpy) user@hostname:numpy$

它表示虛擬環境目前處於活動狀態。

好的,現在你需要安裝numpy

pip3.6 install numpy

輸出:

Collecting numpy
  Using cached https://files.pythonhosted.org/packages/71/90/ca61e203e0080a8cef7ac21eca199829fa8d997f7c4da3e985b49d0a107d/numpy-1.14.3-cp36-cp36m-manylinux1_x86_64.whl
Installing collected packages: numpy
Successfully installed numpy-1.14.3

現在啟動你的 Python shell 並嘗試導入它:

>>> import numpy
>>> 

應該沒有錯誤。
您現在可以繼續您的工作。

完成後,您可以停用虛擬環境。只需輸入:

deactivate

左側的指示器應該會消失。

如果您的虛擬環境出現問題,只需刪除包含它的目錄並重新開始即可。

筆記:使用虛擬環境的缺點是您總是需要啟動和停用它們,但它大大減少了弄亂全域安裝的庫和設定的變化。

答案2

我有完全相同的問題。我的 Ubuntu 系統上安裝了 python3.6 和 python3.7。我使用 pip3 安裝了 numpy。當我嘗試在 python3.7 中匯入 numpy 時,出現了相同的錯誤。

我觀察到以下是 /user/bin/pip3 中的第 1 行

#!/usr/bin/python3

我的 python3 指向 /usr/bin/python3.6

以下對我有用:

  1. 更新python3

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/<python version> 1

這將使 pip3 適用於您所需的 python3 版本

  1. 卸載為舊版 python3 安裝的 numpy

sudo pip3 uninstall numpy

  1. 安裝所需版本的 python3 的 numpy

sudo pip3 install numpy

這有效!

答案3

我遇到了同樣的問題,我透過更新numpy套件修復了此錯誤,如下所示:

sudo pip install -U numpy


[筆記]:

如果之後您遇到此錯誤:UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

執行以下命令:

sudo apt-get install python3-tk

相關內容