python - 使用 2 个不同的应用程序构建一个 python 项目

标签 python windows linux pygtk

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

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

project.common - 用于公共(public)代码

project.frontend - 用于前端。

project.backend - 用于后端。

所以:

project/
    common
    frontend
    backend

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

谁能给我一些建议?

最佳答案

您的 中可以有多个目录(即 common/projectfrontend/projectbackend/project 目录) PYTHONPATH 具有重叠的层次结构(即每个都有 project 顶级包),但默认情况下 Python 对此不满意,因为它使用 第一个 匹配目录它会像许多其他语言(PHP、Java 等)那样查找但不会搜索所有这些文件,因此您会遇到导入错误。

然而,通过将它放在每个 project/ 目录的 __init__.py 中,您实际上是在告诉 Python 继续寻找,并且这不是唯一可以找到代码的地方对于这个包:

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

许多 Pythonista 会因为这种荒谬的偏差而回避和 mock 你,并宣称这种努力是愚蠢的,并可能对你的灵长类动物祖先提出令人不快的建议。他们会说,“命名空间包是个糟糕的主意”。准备捍卫你的决定。难道你敢将这两行添加到你的源代码树中而不附上注释解释它们的作用!

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

如果您采用这种方法,您可以使用 common+frontend 和另一个使用 common+backend.

关于python - 使用 2 个不同的应用程序构建一个 python 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7576368/

相关文章:

Linux #打开文件限制

python - 通过 os.system() 激活 virtualenv

python - 获取字符之前和之后的字符串,然后将它们设置为变量 Python

python - 单元测试期间未访问全局变量

c - 为什么 calloc 无法在具有 4GB RAM 的系统上分配 1GB?

windows - gVim 如何设置 guifont 粗体属性

python - 在 Python 中,如何获取文件的正确大小写路径?

linux - 在Linux中使用cURL POST txt文件和文本

linux - ./斐波那契.sh : line 11: syntax error near unexpected token `do'

python - 使用 block 读取大型 csv 文件时,如何在连接 block 之前处理除一列之外的所有列