尝试运行 Python 脚本时出现“ImportError: No module named”

新手上路,请多包涵

我正在尝试运行一个脚本,该脚本会启动一个 python 脚本等。我得到一个 ImportError: No module named …,但是,如果我启动 ipython 并通过解释器以相同的方式导入相同的模块,则该模块被接受。

发生了什么事,我该如何解决?我试图了解 python 如何使用 PYTHONPATH,但我完全糊涂了。任何帮助将不胜感激。

原文由 CodeOcelot 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 458
2 个回答

这个问题是由于命令行 IPython 解释器使用当前路径的方式与单独进程的方式(无论是 IPython 笔记本、外部进程等)的方式。 IPython 将寻找不仅可以在您的 sys.path 中找到的要导入的模块,而且还可以在您当前的工作目录中找到。从命令行启动解释器时,您正在操作的当前目录与您启动 ipython 的目录相同。如果您运行

import os
os.getcwd()

你会看到这是真的。

但是,假设您使用的是 ipython 笔记本,运行 os.getcwd() 而您当前的工作目录是您在 ipython_notebook_config.py 文件中告诉笔记本进行操作的文件夹(通常使用 c.NotebookManager.notebook_dir 设置)。

解决方案是为 python 解释器提供 path-to-your-module。最简单的解决方案是将该路径附加到您的 sys.path 列表中。在您的笔记本中,首先尝试:

 import sys
sys.path.append('my/path/to/module/folder')

import module_of_interest

如果这不起作用,则您手上遇到了与导入路径无关的不同问题,您应该提供有关您的问题的更多信息。

解决这个问题的更好(和更持久)的方法是设置你的 PYTHONPATH ,它为解释器提供了额外的目录来查找 python 包/模块。将 PYTHONPATH 编辑或设置为全局变量取决于操作系统,此处针对 UnixWindows 进行了详细讨论。

原文由 tyleha 发布,翻译遵循 CC BY-SA 4.0 许可协议

在运行 python 项目时,只需在显示错误的文件夹下创建一个名为 __init__.py 的空 python 文件。

原文由 Mohideen bin Mohammed 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题