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

svgewumm  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(296)

研究免责声明:

我检查了以下其他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时停止,如果它存在并报告上述错误。

更新:

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

8aqjt8rx

8aqjt8rx1#

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

相关问题