我以前曾使用过 numpy。不知道发生了什么,但现在我收到导入错误:
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named numpy
我尝试使用 pip 和 apt 卸载并重新安装 numpy (导入错误:模块名为 numpy),如其他答案中所建议的那样,但这并没有解决我的问题。它说我有最新版本的numpy:
$ sudo apt install python-numpy
Reading package lists... Done
Building dependency tree
Reading state information... Done
python-numpy is already the newest version (1:1.13.3-2ubuntu1).
The following packages were automatically installed and are no longer required:
libllvm6.0 libllvm6.0:i386 libllvm7 libllvm7:i386
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 79 not upgraded.
$ python -c "import numpy"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named numpy
顺便提一下,numpy 在 python3 中运行良好。
答案1
在 pip 中安装应用程序时,必须指定 pip 版本,或指定系统或用户版本。(pip2 适用于 Python2,pip3 适用于 Python3。)此外,还有系统和用户实例。安装 Python 库时,有时必须指定它是适用于用户还是适用于整个系统。例如
pip2 install --user numpy
sudo -H pip2 install --system numpy
此外,pip2 和 pip3 是分开的,不会交叉。
$:~/$ pip2 install --user numpy
Collecting numpy
Downloading https://files.pythonhosted.org/packages/d7/b1/3367ea1f372957f97a6752ec725b87886e12af1415216feec9067e31df70/numpy-1.16.5-cp27-cp27mu-manylinux1_x86_64.whl (17.0MB)
100% |████████████████████████████████| 17.0MB 83kB/s
Installing collected packages: numpy
Successfully installed numpy-1.16.5
$:~/$ pip3 install --user numpy
Collecting numpy
Downloading https://files.pythonhosted.org/packages/d2/ab/43e678759326f728de861edbef34b8e2ad1b1490505f20e0d1f0716c3bf4/numpy-1.17.4-cp36-cp36m-manylinux1_x86_64.whl (20.0MB)
100% |████████████████████████████████| 20.0MB 83kB/s
Installing collected packages: numpy
Successfully installed numpy-1.17.4
经过一些测试,我发现它sudo apt install python-numpy
为你安装了 python3。对我来说,它为 python2 而不是 python3 安装了它。原因是我的系统默认使用 python2 作为主 python。对于某些系统,python3 是要安装库的默认 python。所以,我真的建议你习惯于pip2
安装pip3
库。
答案2
事实证明,我的系统中有两个 python 安装。一个在/usr/bin
,另一个在/usr/local/bin/
,前者是系统版本,后者是我前段时间安装的。我使用 pip 或 apt-get 安装和重新安装的所有软件包都与 python 的系统版本相关联,而 python 的路径指向自定义安装。因此,每当我从终端打开 python 时,我基本上都在调用自定义安装,而所有软件包都安装在系统版本中。这导致导入不同软件包时出现错误。
一种解决方案是简单地删除本地安装。另一种解决方案(我采用的方法是将符号链接重定向到系统版本)如下:sudo ln -sf /usr/bin/python /usr/local/bin/python
这完成了工作。