2009-11-23 30 views
7

在大多数编程环境中,很清楚代码如何分布到多个部分以及每个部分如何交互。在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

重复:http://stackoverflow.com/questions/171785/how-do-you-organize-python-modules,http://stackoverflow.com/questions/ 527919 /如何正确组织一个包模块依赖树,http://stackoverflow.com/questions/501945/how-to-modularize-a-python-application – 2009-11-23 11:09:59

回答

5

有几个部分对于这个问题,所以我会尽量回答依次为:

1:它真的取决于你,有超出没有严格遵守的规则,用于建立一个目录应视为package等。有些框架会使用脚本来规定目录结构来生成脚手架(有点像Rails在Ruby世界中所做的),但这纯粹是给定框架的便利或约定。组织您的代码和模块,使其在逻辑上与其他语言一样合理。

2:你有什么绝对没问题。或者,如果您使用distutils,console_script作为.egg安装的一部分,或者作为最后的手段,则可以使用installed script直接调用main.py(或任何其他名称)脚本。 console_script是相当普遍的,并且被诸如nose测试框架等工具所使用。

3:这个特定主题有PEP。根据我的经验,虽然你应该更喜欢绝对进口到相对的。要强制这种行为,你可以这样做:

from __future__ import absolute_import 
+0

显式相对导入呢?从...开始。进口子包装?我有点担心,当我移动一些软件包或重命名它们时,绝对导入会中断。 – 2009-11-23 08:03:28

+0

我讨厌没有明确的规则。我一直不确定自己是否做得对。这是每个程序员必须独自研究并花费大量时间完成的事情之一。如果有一些指导方针,它会节省很多时间。 (至少对我而言) – 2009-11-23 08:08:08

+0

gs:Python在很多地方都很具规范性,例如PEP8,它指定了正确的风格来使用! (C程序员讨厌这个...)我所链接的PEP试图澄清进口情况,但就项目布局而言,这很难立法。在一个给定的框架内是的,但否则它可以进行辩论。最好的事情是阅读大量的代码,看看你喜欢什么。 – jkp 2009-11-23 08:12:36