Python应用程序的布局是什么样的?

6 投票
1 回答
1887 浏览
提问于 2025-04-15 16:17

在大多数编程环境中,代码是如何分成几个部分并且彼此之间是如何互动的,这些都很清楚。但在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

撰写回答