我想写一个游戏。因此,我有许多不同类型的代码,并希望将它们安排在一个有用的层次结构中。在
我已经研究过在每个文件夹中放置__init__.py
的解决方案,但是我仍然有点困惑,尽管没有python解释器那么多。在
现在假设resource1.py
想要从physics1.py
导入一个函数,或者确实是Game
目录中的任何其他.py
文件中导入一个函数,我该怎么做呢?在
我试过from bin.physics.physics1 import function
,但显然这行不通。在
谢谢你的帮助。在
/Game
launcher.py
/bin
game.py
__init__.py
/physics
__init__.py
physics1.py
physics2.py
/resources
__init__.py
resource1.py
除非使
Game
成为一个包(即,通过将__init__.py
放在Game
目录中),否则常规导入机制是不可能实现的。python相对导入系统只在包中工作。它不是一个通过目录结构中的位置来引用任意模块的通用系统。如果你把游戏打包,那么你可以做from ..bin.physics.physics1 import function
。在编辑:还请注意,相对导入在作为主程序执行的脚本中不起作用。如果您尝试直接运行} keyword 来解决这个问题,但这可能有点棘手。在
resource.py
,并且它使用相对导入,您将得到一个“在非包中尝试相对导入”错误。如果您从另一个模块导入资源,它将起作用。这是因为相对导入系统基于执行模块的“名称”,当您直接运行脚本时,它的名称是__main__
,而不是通常的名称。如果您真的需要,可以使用the ^{相关问题 更多 >
编程相关推荐