我正在尝试运行一个脚本,该脚本会启动一个 python 脚本等。我得到一个 ImportError: No module named …,但是,如果我启动 ipython 并通过解释器以相同的方式导入相同的模块,则该模块被接受。
发生了什么事,我该如何解决?我试图了解 python 如何使用 PYTHONPATH,但我完全糊涂了。任何帮助将不胜感激。
原文由 CodeOcelot 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试运行一个脚本,该脚本会启动一个 python 脚本等。我得到一个 ImportError: No module named …,但是,如果我启动 ipython 并通过解释器以相同的方式导入相同的模块,则该模块被接受。
发生了什么事,我该如何解决?我试图了解 python 如何使用 PYTHONPATH,但我完全糊涂了。任何帮助将不胜感激。
原文由 CodeOcelot 发布,翻译遵循 CC BY-SA 4.0 许可协议
在运行 python 项目时,只需在显示错误的文件夹下创建一个名为 __init__.py
的空 python 文件。
原文由 Mohideen bin Mohammed 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答4.5k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
这个问题是由于命令行 IPython 解释器使用当前路径的方式与单独进程的方式(无论是 IPython 笔记本、外部进程等)的方式。 IPython 将寻找不仅可以在您的 sys.path 中找到的要导入的模块,而且还可以在您当前的工作目录中找到。从命令行启动解释器时,您正在操作的当前目录与您启动 ipython 的目录相同。如果您运行
你会看到这是真的。
但是,假设您使用的是 ipython 笔记本,运行
os.getcwd()
而您当前的工作目录是您在 ipython_notebook_config.py 文件中告诉笔记本进行操作的文件夹(通常使用c.NotebookManager.notebook_dir
设置)。解决方案是为 python 解释器提供 path-to-your-module。最简单的解决方案是将该路径附加到您的 sys.path 列表中。在您的笔记本中,首先尝试:
如果这不起作用,则您手上遇到了与导入路径无关的不同问题,您应该提供有关您的问题的更多信息。
解决这个问题的更好(和更持久)的方法是设置你的 PYTHONPATH ,它为解释器提供了额外的目录来查找 python 包/模块。将 PYTHONPATH 编辑或设置为全局变量取决于操作系统,此处针对 Unix 或 Windows 进行了详细讨论。