"No module named..." 具有一定的项目结构

"No module named..." with certain project structure

我有以下项目结构:

MainScript.py
ExampleFolder
├ MainImport.py
└ SecondaryImport.py

MainScript.py: import ExampleFolder.MainImport
MainImport.py: Import SecondaryImport


当我尝试 运行 MainImport.py 时没有错误,但是当我尝试 运行 MainScript.py 时,我收到一个导入错误 No module named 'SecondaryImport'.

我的问题很简单 - 有什么方法可以只从 MainScript.py 导入 MainImport.py 而不会出现此错误,然后再导入 SecondaryImport.py?提前致谢!

我也试过将一个名为__init__.py的空白文件添加到ExampleFolder,但错误仍然出现。我也看了Python's official documentation,但我找不到问题所在。我错过了什么吗? (:

I have also tried adding a blank file named __init__.py to the ExampleFolder

就是这样 - 您正在以这种方式从目录创建 Python 包。对于包,你有命名空间 directory.file,其中 file 是一个 Python 文件,在 Python 世界中也称为模块。

那么你可以从 mainscript.py:

from examplefolder import mainimport

要导入内部包,您可以在内部使用以下语法 mainscript.py:

import secondaryimport

并在 mainscript.py 中将其用作:

sevondaryimport.SomeClass()

或者你可以这样做:

from secondaryimport import SomeClass

并像这样使用它:

SomeClass()

顺便说一句,除了 类 名称之外,在所有情况下都使用小写 - 只有它们应该使用 CamelCase 名称。

我认为使用语句 import ExampleFolder.SecondaryImport 会奏效。

如果是这样,则可能会发生错误,因为如文档中所述,如果您的模块不在 [=22= 中,导入语句通常会开始搜索调用 python 解释器的主项目目录]本身。

另一种方法是像这样使用相对导入语句: import .secondaryimport 以便告诉 python 解释器在当前目录中查找。希望这对您有所帮助!

我认为查看这些链接会有所帮助(当我遇到类似问题时它对我有所帮助): https://docs.python.org/3/library/sys.html#sys.path https://realpython.com/absolute-vs-relative-python-imports/