构建一个包含2个不同应用程序的python项目

时间:2011-09-27 22:21:38

标签: python windows linux pygtk

我打算在python / GTK中写一个访客的信息亭。该项目将有两个应用程序,即自助服务终端的前端和连接到MySQL数据库的管理后端。

我希望两个应用程序都有共同的代码。 我正在考虑像这样构建项目:

project.common - 用于公共代码

project.frontend - 用于前端。

project.backend - 用于后端。

所以:

project/
    common
    frontend
    backend

我将遇到的问题是每个应用程序都有自己的data_files,我希望单独打包应用程序。前端将在Linux上运行,后端将在Windows(cx_freeze)和Linux上运行。

有人可以给我任何建议吗?

1 个答案:

答案 0 :(得分:2)

您的common/project中的多个目录(即frontend/projectbackend/projectPYTHONPATH目录)可能有重叠的层次结构(即每个目录都有project个level package),但默认情况下Python不会对此感到满意,因为它使用它找到的第一个匹配目录,并且不会像许多其他语言一样搜索所有这些目录(PHP,Java等)。 ),所以你会得到导入错误。

但是,通过将其放在每个project/目录的__init__.py中,您实际上是在告诉Python继续查找,并且这不是唯一可以找到此程序包代码的地方:

import pkgutil
__path__ = pkgutil.extend_path(__path__, __name__)

许多Pythonistas会避免和嘲笑你这种荒谬的异常,并宣称这种努力的愚蠢,并可能对你的灵长类动物的祖先提出不愉快的建议。他们会说,“命名空间包是一个糟糕的主意”。准备捍卫你的决定。并且你不要把这两行添加到你的源代码树中,而不附带解释他们所做的事情的评论!

此页面对其中一些概念有一个很好的解释: 说明:http://www.doughellmann.com/PyMOTW/pkgutil/

如果您使用此方法,则可以使用common + frontend进行分发,使用common + backend进行分发。