【问题标题】:Explain why numpy should not be imported from source directory解释为什么不应从源目录导入 numpy
【发布时间】:2013-01-12 06:17:44
【问题描述】:

研究免责声明:

我检查了以下其他 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 并且您的工作目录应该是它所在的目录以外的任何目录。

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

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

  • 使用distutils安装本地目录

  • 使用virtualenv创建虚拟系统目录

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

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

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

机器状态:

我正在使用没有管理权限的 Windows 机器。 他们安装了 Python 3.3 Shell 和 matplotlib。 运行命令提示符时,pythonpython3 无法识别。我必须从应用程序菜单运行 Python shell。 我什至可以从我自己的目录(与他们的目录不同)开始成功导入 matplotlib,但它会在到达 numpy 模块的__init__.py 时停止,如果它存在并报告上述错误。

更新:

幸运的是,我的管理员能够直接在 site-packages 文件夹中正确安装 numpy。谢谢你回答我的问题。因为你,我更了解情况。

【问题讨论】:

  • 我在 site-packages 文件夹中有 numpy。仍然无法从 Eclipse IDE 的 Eclipse 提交者版本:Oxygen.3a 版本(4.7.3a)构建 ID:20180405-1200

标签: python import numpy matplotlib directory


【解决方案1】:

numpy 包括用 C 编写的扩展模块。您需要在 numpy 包完成之前构建这些扩展模块。最可靠的方法是构建它并像往常一样将其安装到site-packages。您也可以使用standard distutils options for this 将其安装到另一个目录。但是,一旦您安装了它,您应该将您的目录从源代码树中更改出来。 Python 开始在您的当前目录中寻找包,因此不完整的 numpy 包(没有必要的内置 C 扩展模块)的存在将首先被拾取并导致您引用的消息的错误。这种情况经常发生,所以我们会给出很长的信息来解释该怎么做。

【讨论】:

  • 是否有必要构建 numpy 的扩展模块,以便 numpy 可以与操作系统一起使用?所有模块都有扩展还是只有“更高级”的?当您调用pip install numpy 时,pip 是否进行构建?有没有可以构建这些 C 扩展的初学者教程?
  • 1.不,大部分numpy 是速度的扩展模块。 2、numpy的核心是一个扩展模块。您必须构建扩展模块。 3. 如果找不到预建的二进制轮,是的。 4. 这不是通常获得教程式文档的那种东西。初学者应该使用 PyPI 上的二进制文件。 scipy.org/install.htmlnumpy.org/devdocs/user/building.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2022-01-07
  • 2020-10-03
  • 1970-01-01
相关资源
最近更新 更多