我具有以下项目结构:
MainScript.py
ExampleFolder
├ MainImport.py
└ SecondaryImport.py
MainScript.py:import ExampleFolder.MainImport
MainImport.py:Import SecondaryImport
当我尝试运行MainImport.py
时,不会出现任何错误,但是当我尝试运行MainScript.py
时,会出现提示为No module named 'SecondaryImport'
的导入错误。
我的问题很简单-是否可以通过任何方式仅从MainImport.py
导入MainScript.py
而不出现此错误,然后导入SecondaryImport.py
?预先感谢!
我也尝试过将名为__init__.py
的空白文件添加到ExampleFolder
,但是错误仍然出现。我也阅读了Python's official documentation,但找不到问题。我想念什么吗? (:
答案 0 :(得分:1)
我认为使用语句import ExampleFolder.SecondaryImport
是可行的。
如果确实如此,则可能会发生错误,因为如docs中所述,如果您的模块不在python本身中,则import语句通常会开始在您的主项目目录中搜索python解释器。
另一种方法是使用相对的导入语句,如下所示:
import .secondaryimport
以便告诉python解释器在当前目录中查找。希望这会有所帮助!
我认为,看看这些链接会有所帮助(当我遇到类似问题时,它对我有帮助): https://docs.python.org/3/library/sys.html#sys.path https://realpython.com/absolute-vs-relative-python-imports/
答案 1 :(得分:0)
我还尝试将名为__init__.py的空白文件添加到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名称。