Python应用程序的布局是什么样的?
在大多数编程环境中,代码是如何分成几个部分并且彼此之间是如何互动的,这些都很清楚。但在Python中,我感觉完全迷失了。
一个Python应用的结构应该是什么样的呢?
目前我有:
setup.py application_name/ __main__.py __init__.py views/ controllers/ model/ resources/ <- images, videos, ...
怎么运行这个应用呢?
我有一个运行脚本,内容如下:
#!/usr/bin/env python -m "application_name"
那我是否应该用
__main__.py
来做这个呢?这个运行脚本是必要的吗?怎么导入应用的各个部分?(Python 2.6)
比如在
application_name/__main__.py
中:from . import controllers.MainWindow
你们是怎么布局你们的应用的呢?
1 个回答
5
这个问题有几个部分,我会逐一回答:
1: 这完全取决于你自己,没有什么硬性规定,除了那些用来确定一个目录应该被当作包来处理的规则。某些框架会规定一个目录结构,并使用脚本来生成基础框架(就像Ruby世界里的Rails那样),但这只是为了方便或是框架的约定。你可以像在其他语言中一样,按照逻辑来组织你的代码和模块。
2: 你现在的做法完全没问题。或者,如果你使用的是distutils,你可以使用一个安装脚本,或者在进行.egg安装时使用console_script,最后的办法就是直接调用main.py(或者你给它起的其他名字)脚本。其实console_script是很常见的,像nose测试框架就使用了这个。
3: 关于这个特定话题有一个PEP。不过根据我的经验,你应该更倾向于使用绝对导入,而不是相对导入。要强制使用这种行为,你可以这样做:
from __future__ import absolute_import