当前位置: 首页 > 面试题库 >

说明为什么不应该从源目录导入numpy

王泓
2023-03-14
问题内容

研究免责声明:

我已经检查了以下其他问题:

  • 如何在python shell中导入numpy

  • 从相对路径导入模块

也许对某些人来说,这些人可能会回答我的问题,但是据我所知,我仍然不了解这种情况。

我正在尝试导入numpy,以便matplotlib可以工作,但是在执行__init__.pynumpy文件夹中的文件时,显示以下错误消息:

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创建我认为是某种子html" target="_blank">系统目录的系统目录。

因此,如果我错了,请纠正我,但是以某种方式强烈要求将numpy安装到主系统目录中吗?

机器状态:

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

更新:

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


问题答案:

numpy包含用C编写的扩展模块。您需要在numpy软件包完成之前构建这些扩展模块。执行此操作的最可靠的方法是将其构建并按site-packages正常方式安装。您也可以使用此标准distutils选项将其安装到另一个目录。但是,一旦安装它,就应该在源代码树之外更改目录。Python开始在当前目录中查找软件包,因此将首先获取不完整的numpy软件包(没有必要的内置C扩展模块)的存在,并导致您引用该错误消息。这种情况经常发生,因此我们给出了很长的信息来解释该怎么做。



 类似资料:
  • 我第一次尝试将OpenCV用于Python 3。要安装,我只需在终端中键入“pip3安装opencv-python”。当我这样做时,我在Finder(我在Mac上)中看到,在 /usr/local/lib/python3.7/site-packages,我现在有一个名为“cv2”的新文件夹。这很奇怪。为什么不是cv3,就像我用pip3一样?我不知道。 当我尝试从python3导入cv2时,它说“没

  • db目录 用于存放pika的所有数据文件,包含5个子目录(5大数据类型)它们是:kv,set,zset,hash,list,从pika3.0.0开始,这些数据结构目录为:hashes,lists,sets,strings,zsets log目录 用于存放所有日志文件,包含:一般日志、警告日志、错误日志、同步日志(binlog)、同步日志节点信息文件(mainfest) dump目录 用于存放快照式

  • 原生目录 target:这个目录里定义了各平台及板级固件和 kernel 的编译配置 package:包含各个供固件使用的软件包的定义 tools:包含编译过程中主机所需的工具软件包 toolchain:定义获取和编译 kernel headers, C library, bin-utils, compiler, debugger 等组件 include:openwrt 基础编译脚本 script

  • 我的老师让我这样做,但在评论区我被告知我不应该这样做。 为什么?

  • 问题内容: 我正在尝试“将现有项目导入工作区”。作为“根目录”,我选择所有.java(和.class)文件所在的目录。Eclipse告诉我“未找到要导入的项目”。为什么? 问题答案: Eclipse正在寻找eclipse项目,这意味着它正在根目录(和)中搜索特定于Eclipse的文件。您或者给了Eclipse错误的目录(如果要导入一个eclipse项目),或者您实际上想从现有源创建一个新项目(->