我具有以下项目结构:
if DEBUG and USE_DEBUG_TOOLBAR:
MIDDLEWARE = ('debug_toolbar.middleware.DebugToolbarMiddleware',) + MIDDLEWARE
a.py:
x/
a.py
b.py
main.py
main.py
from b import *
class A:
.....
我希望能够独立运行from x.a import A
.....
并通过a.py
来访问其功能
我能够运行main.py
,但是当我尝试按a.py
所示导入它时,找不到该模块。我可以通过在main.py
中添加以下行来解决此问题:
a.py
但是这感觉很棘手。有没有更好的方法来实现所需的行为?
答案 0 :(得分:1)
您需要将目录“ x”标记为包,以便能够加载其中的任何内容。
如Python official documentation所述,您必须在“ x”的根目录中创建一个空的“ __init__.py”文件,以将其标记为包。
然后您的目录结构应如下所示:
.
└── x
├── __init__.py
├── a.py
└── b.py
└── main.py
您可能需要编辑“ a.py”,以使用句点表示当前程序包来加载相对于其程序包的模块:
# x/a.py
from .b import *
class A:
# rest of your code