我看了前面的问题,但我的情况略有不同。。。

我有一个目录,其中包含几个python类,这些类在需要的地方相互导入。我想开始将它们打包成更小的模块,主要是为了便于组织。这个包的中心组件设置了一个wsgi应用程序,然后附加的模块为其提供了功能(到目前为止,我可以在将mod的输入挂接到web应用程序之前,在命令行上分别测试mod,这一点迄今为止效果非常好)

我了解提供__init__.py模块的工作原理、名称空间以及何时释放控制。我遇到的问题是模块在某些情况下会互相导入。

例如,我有一个JSONEncoder,它被用作许多对json.dumps()调用的cls参数。这个类几乎在每个文件中都使用。如果我将这些模块中的一些移到包中的子目录中,我将如何“向上一级”导入json编码器?我需要在每个文件中把父目录放在PYTHONPATH上吗?是否最好也给编码器一个单独的\uuu init_uu.py文件自己的目录?

或者,我是否应该在当前工作目录下的所有目录中插入一个函数,并将它们添加到路径中?

目前,包含所有代码的主目录本身并不是打包的。。。考虑到类具有循环导入,将类迁移到子目录的最佳方法是什么?


我开发的主工作目录只是一个包含大约10个.py文件的常规目录,所有这些文件都包含与文件名类似的类。目前整个过程只是一个.py文件的git repo。在-project

search.py
jsonencoder.py
webapp.py
modela.py
modelb.py
modelc.py

当然,名字只是为了举例。

据我所知(这可能是完全错误的),明智的做法是将这些模型打包在一起,对吗?

^{pr2}$

但是反过来,project文件夹也需要__init__吗?使用jsonencoder的modela如何导入它?