我按照说明安装了 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
以下对我有用:
- 更新python3
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/<python version> 1
这将使 pip3 适用于你所需的 python3 版本
- 卸载为旧版 python3 安装的 numpy
sudo pip3 uninstall numpy
- 安装所需版本的 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