"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/
我有以下项目结构:
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/