我打算用 python/GTK 编写一个访客亭。该项目将有两个应用程序,信息亭的前端和连接到 MySQL 数据库的管理后端。
我希望两个应用程序具有共同的代码。 我正在考虑像这样构建项目:
project.common - 用于公共(public)代码
project.frontend - 用于前端。
project.backend - 用于后端。
所以:
project/
common
frontend
backend
我将要遇到的问题是每个应用程序都有自己的数据文件,我希望将应用程序单独打包。前端将仅在 Linux 上运行,后端将在 Windows (cx_freeze) 和 Linux 上运行。
谁能给我一些建议?
最佳答案
您的 中可以有多个目录(即
具有重叠的层次结构(即每个都有 common/project
、frontend/project
和 backend/project
目录) PYTHONPATHproject
顶级包),但默认情况下 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/