包装蟒蛇我通过前面的问题,这个效果看,但我的情况略有不同...圆形进口
我有一个包含进口彼此在这里和那里必要几个Python类目录。我想开始将它们打包成更小的模块,主要是为了组织目的。该软件包的核心组件设置了一个wsgi应用程序,然后额外的模块为其提供了功能(迄今为止,该功能运行良好,因为我可以在命令行上单独测试这些mod,然后将其输入连接到Web应用程序。)
我了解如何提供__init__.py
模块,其命名空间以及何时释放控制权。我遇到的问题是某些情况下的模块相互导入。
例如,我有一个JSONEncoder,用作cls
参数,用于json.dumps()
的许多调用。这个类实际上用于每个文件。如果我将这些模块中的某些模块移动到程序包中的子目录中,我将如何去“导入一个级别”来导入json编码器?我需要将父目录放在每个文件的PYTHONPATH中吗?编码器自己的目录以及单独的__init__.py文件会更好吗?
另外,我是否最好放入一个函数来钻取当前工作目录下的所有目录,并将它们添加到路径中?
目前包含所有代码的主目录本身没有打包......考虑到它们具有循环导入,将类像类迁移到子目录的最佳方法是什么?
编辑:
对于澄清:
我一直在开发的主要工作目录只是包含大约十.py文件,它们都含有与像它们的文件名的名字班定期目录。目前整个事情只是.py文件的git repo。
-project
search.py
jsonencoder.py
webapp.py
modela.py
modelb.py
modelc.py
名称当然是例如目的。
现在据我所知(这可能是完全错误的)明智的做法是将这些模型打包在一起,对吗?
-project
search.py
jsonencoder.py
webapp.py
-models
__init__.py
modela.py
modelb.py
modelc.py
但后来反过来又会在project
文件夹需要一个__init__
吗?使用jsonencoder的modela将如何导入它?
“我有一个包含多个python类的目录“。这不明智。目录包含文件。目录也可以是Python包。文件是模块。模块包含类定义。你能澄清你的问题吗? – 2012-01-12 20:22:51
@ S.Lott编辑示例 – DeaconDesperado 2012-01-12 20:33:40