我正在编写一个游戏框架。这是我目前的文件结构:
src/
framework/
__init__.py
util.py
render.py
game.py
pong.py
我希望能够直接从import game
文件中执行import render
或pong.py
。实现这一目标的最佳方法是什么?最初util.py, render.py, game.py
模块位于src
文件夹中,但为了组织起见,我决定将它们放入单独的文件夹中。我对包装惯例很新,所以我不知道这是否是推荐的做事方式。
答案 0 :(得分:7)
这样做的最好方法就是不要这样做。正是出于原因,你首先将它们移动 - 组织起见 - 你会希望它们在一个单独的模块中。如果要在代码中将模块称为game
,则可以执行以下操作:
from framework import game
game.foo()
通常,当您执行import game
时,您希望game
是系统库或脚本运行的文件夹。如果不是这样的话,就会让人失望。如果您要使您的框架成为系统库,那么您不会将它作为三个独立的库util
,game
和render
,不是吗?您将它打包在一个库中 - framework
- 并使用子模块分发它。因此,你真的不想这样做。
但是,正如我所知,非答案可能令人沮丧,如果您真的想要继续,可以将framework
文件夹添加到sys.path
,每当您导入模块时python都会检查:
import sys
sys.path.append("framework")
import game