Python 中的不一致导入错误

Inconsistent Import Error in Python

我只是有一个关于我在尝试导入时遇到的错误的快速问题:

from psychopy import gui

因此,如果我尝试在一个程序中导入此代码,我没有任何问题,但是,如果我尝试在另一个程序中导入它,我会得到:

"ImportError: cannot import name gui"

有谁知道为什么会这样?为什么它对一个问题有效,而对另一个问题无效?还有,感觉以前不是这样的,突然就开​​始了。任何建议将不胜感激。

更新:我认为 Jon 的回答是正确的。如果我是对的,你应该得到一个错误 "no module named psychopy".


鉴于你用 psychopy 标签标记了这个问题,我的猜测是如果你从 psychopy 应用程序 运行 它有效,如果你 运行 它来自另一个编辑器或命令行。

原因是 psychopy 目前作为一个捆绑包提供,它自带 python 和许多 modules/dependencies,包括 psychopy。系统不会通过 PYTHONPATH.

识别这些模块

您可以按照 psychopy-dev 列表中 here or (2) use the conda based installation described in this post 列出的步骤之一 (1) 使它们在系统范围内可用。后一个功能仍在开发中,但最终可能会成熟为默认安装选项。

我认为您在两个项目中使用了不同的虚拟环境,因此包安装在一个 virtualenv 中,而不是另一个。

要验证情况是否如此,请在两个项目中执行 pip freeze 并比较结果。

如果只有一个环境,输出将相同,否则两者输出不同。

认为其他答案是错误的;-) 我认为如果您有不同的虚拟环境或安装,那么您的代码中的错误将指示 "No module named psychopy"

事实上,它找到了一个叫做 psychopy 的东西,但没有找到一个叫做 gui 的子模块,这是一个不同的问题。如果您在当前工作目录旁边(例如,在您启动脚本的位置旁边)有一个名为 psychopy 的文件夹或文件,通常会发生这种情况。然后 Python 认为那是 psychopy 模块,但在其中找不到 gui

那么,您有一个名为 psychopy 的文件夹吗?将其重命名为 psychopyStuff.