繁体   English   中英

具有特定项目结构的“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'

我的问题很简单-有什么办法,我只能导入MainImport.pyMainScript.py没有得到这个错误,并导入SecondaryImport.py 提前致谢!

我也尝试将名为__init__.py的空白文件添加到ExampleFolder ,但错误仍然出现。 我也看了Python的官方文档,但是没找到问题所在。 我错过了什么吗? (:

我认为使用语句import ExampleFolder.SecondaryImport会起作用。

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

另一种方法是使用这样的相对导入语句: import .secondaryimport以告诉 python 解释器查看当前目录。 希望这可以帮助!

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

我还尝试将名为 __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 名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM