【问题标题】:Debian No Module named numpyDebian 没有名为 numpy 的模块
【发布时间】:2015-12-17 05:27:42
【问题描述】:

我已经在 Debian 上安装了 Python Numpy,使用...

apt-get install python-numpy

但是当运行 Python shell 时,我得到以下...

Python 2.7.10 (default, Sep  9 2015, 20:21:51)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named numpy

当我查看 /usr/local/lib/python2.7/site-packages/ 的内容时,我注意到 numpy 不在列表中。

如果我通过 pip 安装它,即pip install numpy 它工作得很好,但是,我想使用 apt-get 方法。我做错了什么?

其他:

回显 $PYTHONPATH /usr/local/lib/python2.7

dpkg -l python-numpy...

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                            Version                      Architecture                 Description
+++-===============================================-============================-============================-====================================================================================================
ii  python-numpy                                    1:1.8.2-2                    amd64                        Numerical Python adds a fast array facility to the Python language

Python 2.7.10

['', '/usr/local/lib/python2.7', '/usr/local/lib/python27.zip', '/usr/local/lib/python2.7/plat-linux2', '/usr/local/lib/python2.7/lib-tk', '/usr/local/lib/python2.7/lib-old', '/usr/local/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/site-packages']

which -a python...

/usr/local/bin/python
/usr/bin/python

回显 $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

【问题讨论】:

  • 请同时添加which -a python和echo $PATH的输出。请注意,apt 没有安装到 /usr/local,所以这不起作用。
  • 你的apt-get是为/usr/bin/python安装的,即系统python,你很可能使用/usr/local/bin/python,为什么不想使用pip?
  • 您可以尝试apt-get source install python-numpy in /usr/local/lib/python2.7/site-packages/ 然后尝试更改目标目录并安装,您当然可以只使用您的系统python,但这可能会导致问题

标签: python linux python-2.7 numpy debian


【解决方案1】:

从which 结果中可以看出,您在输入python 时运行的python 是/usr/local/bin/python。

这是一个你可能自己安装在那里的python,就像Debian will never put anything in /usr/local本身一样(空目录除外)。

怎么样?好吧,例如运行pip。通常,你永远不应该在virtualenv 之外使用pip,因为它会在你的系统上安装你的包管理器不知道的东西。并且可能会破坏一些东西,比如你在系统上看到的东西。

因此,如果您运行 /usr/bin/python,它应该会看到您使用包管理器安装的 numpy 包。

如何解决?好吧,我会清除 /usr/local 中的任何内容(请注意,它肯定会破坏依赖于您在本地安装的东西的东西)。然后我会apt-get install python-virtualenv,并且总是使用 virtualenv。

$ virtualenv -p /usr/bin/python env
$ . env/bin/activate
(env)$ pip install numpy
(env)$ python
>>> import numpy
>>>

这样,软件包将安装在env 目录中。您以普通用户而不是 root 身份执行所有这些操作。而且你的不同项目可以有不同的环境,安装不同的包。

【讨论】:

  • 感谢您的回复 :) 我不想使用pip 来安装这些软件包,因为它们必须构建,因为这些实例会上下旋转,这会增加很多时间。此外,我是 virtualenv 的忠实粉丝,但出于多种原因我们不会在生产中使用它。
  • 您可以备份 virtualenv 并恢复它以避免重新编译。只要您不移动它,它就会透明地工作。另一种选择是将make debian packages 排除在您的项目之外,以便它们利用 Debian 的依赖关系处理。
猜你喜欢
  • 2015-03-04
  • 2016-06-07
  • 1970-01-01
  • 2020-04-21
  • 2021-11-07
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多