在我的 git 存储库的顶层,我有以下文件结构:
miscellaneous Dockerfiles, readme, etc
Code/
training.py
data/
generate.py
tasksets.py
Run Code Online (Sandbox Code Playgroud)
有时,当我将模块作为脚本运行时,我想generate从模块内部导入模块,因此包括以下导入:tasksetstasksetstasksets
import generate
Run Code Online (Sandbox Code Playgroud)
其他时候我想tasksets从模块内部导入模块training,因此training包含以下导入:
import tasksets
Run Code Online (Sandbox Code Playgroud)
然而,这个设置给我带来了问题。当我作为脚本运行时tasksets可以很好地导入,但是如果我在作为脚本运行时导入内部,则会抛出错误(我认为是因为在默认路径中找不到脚本)。我尝试过使用文件、相对导入等查看各种其他 StackOverflow 问题和答案。目前,我的解决方法是在内部使用以下几行:generatetasksetstasksetstrainingtrainingtraininggenerate__init__.pytasksets
if __name__ == "__main__": import generate
else: from data import generate
Run Code Online (Sandbox Code Playgroud)
但这感觉不太对(而且我的 IDE 也不喜欢它)。请有人解释如何使用正确的__init__.py文件分类和导入语句,以便我可以在作为脚本generate运行时导入,也可以在作为脚本运行时导入?tasksetstasksetstraining