解释为什么numpy不应该从源目录导入

问题描述 投票:0回答:2

研究免责声明:

我已经研究了以下其他 StackOverflow 问题:

也许对某些人来说,这些可以回答我的问题,但据我所知,我仍然不明白情况。

我试图导入 numpy 以便 matplotlib 可以工作,但是在执行 numpy 文件夹中的

__init__.py
文件时,显示以下错误消息:

ImportError: Error importing numpy: you should not try to import numpy from
    its source directory; please exit the numpy source tree, and relaunch
    your python intepreter from there.

解释从源目录导入某些内容而不是其他导入方式的含义。是不是说导入的时候不应该是源代码呢?或者这是否意味着它实际上只是我导入的错误目录/文件夹。我知道 StackOverflow 的另一个答案是:

该信息是相当不言自明的;当你调用Python时,你的工作目录不应该是numpy源目录;应该安装 numpy 并且你的工作目录应该是除了它所在的目录之外的任何目录。

但是,我不明白这一点。你不应该导入你想要使用的东西吗?我假设导入命令将源目录合并到此语句中的当前工作目录中。

我还阅读了其他答案,例如:

  • 使用

    distutils
    安装本地目录

  • 使用

    virtualenv
    创建虚拟系统目录

  • 使用 Enthought 的 EPD 将 numpy 预安装在我认为是系统目录的位置, 和

  • 使用像

    $ dpkg -i --force-not-root --root=$HOME mypackagename.deb
    这样的命令来创建我认为是某种被视为系统目录的子系统目录。

所以,如果我错了,请纠正我,但是 numpy 是否强烈要求以某种方式安装在主系统目录中?

机器状态:

我使用的是没有管理权限的 Windows 计算机。 他们安装了 Python 3.3 Shell 和 matplotlib。 运行命令提示符时,无法识别

python
python3
。我必须从应用程序菜单运行 Python shell。 我什至可以成功地从我自己的目录(与他们的目录不同)导入 matplotlib,但它会在到达 numpy 模块的
__init__.py
(如果存在)时停止并报告上述错误。

更新:

幸运的是,我的管理员能够直接在

site-packages
文件夹中正确安装 numpy。不过还是谢谢你回答我的问题。因为你我更加了解情况了。

python import numpy matplotlib directory
2个回答
13
投票

numpy 包含用 C 编写的扩展模块。您需要在 numpy 包完成之前构建这些扩展模块。最可靠的方法是像平常一样构建它并将其安装到

site-packages
。您还可以使用标准 distutils 选项将其安装到另一个目录。但是,一旦安装了它,您应该将目录从源代码树中更改出来。 Python 开始在当前目录中查找包,因此将首先发现不完整的 numpy 包(没有必要的内置 C 扩展模块),并导致您引用的消息错误。这种情况经常发生,因此我们给出了一条很长的消息来解释该怎么做。


0
投票

我在树莓派上遇到了这个错误。要修复它,我必须安装依赖项:

sudo apt-get install libopenblas-dev
© www.soinside.com 2019 - 2024. All rights reserved.