ImportError:无法导入名称“multiarray”

ImportError:无法导入名称“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 导入

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通过 Ubuntu 存储库安装外,您还可以尝试安装并使用pip
这是 Python 的包管理器。您可以使用它来安装各种 Python 库,例如numpy。然后使用它为您的 Python3.6
安装。numpy

安装 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

相关内容