python - 如何使用三个使用公共(public)模块的应用程序构建一个 python 项目

标签 python python-2.7 architecture module projects-and-solutions

我的项目包含三个 Python 应用程序。 应用程序 1 是一个网络应用程序。 应用程序 23 包含下载一些数据的脚本。

所有三个应用程序都需要使用包含“模型”(保存到数据库的类)和通用设置的通用模块。

我不知道如何构建这个项目。我可以创建三个目录,每个应用程序一个,然后将 Common 复制三次到它们的目录中(看起来不对)。

我想到的另一个想法是;创建一个主目录并将所有来自 Common 的文件放在那里,包括 __init__.py。然后,创建三个子目录(子模块),每个应用一个。

另一种方法是使用 pip 安装 Common,但这意味着我每次更改该模块中的内容时都必须重新安装。

在以前的项目中,我使用 .NET - 在那个世界中,等效项是包含四个项目的解决方案,其中一个是 Common

有什么建议吗?

最佳答案

我有一个类似的项目是这样设置的

project_root/
    App1/
        __init__.py
    FlaskControlPanel/
        app.py
        static/
        templates/
    models/
        __init__.py
        mymodels.py

然后,我从 project_root 运行所有内容。我有一个设置 PYTHONPATH=. 的小脚本(批处理或 shell,具体取决于我的环境),以便导入正常工作。这样做是因为我通常使用 PyCharm 进行开发,其中导入“正常工作”,但是当我部署最终产品时,路径与它在我的 IDE 中所做的不匹配。

一旦 PYTHONPATH 设置为包含项目根目录中的所有内容,您就可以执行标准导入。

例如,在我的 FlaskControlPanel app.py 中,我有这一行:

from models.mymodels import Model1, Model2, Model3

从 App1 __init__.py 我有完全相同的导入语句:

from models.mymodels import Model1, Model2, Model3

当我在 project_root 目录中时,我可以通过从命令行(在 Windows 中)运行它来启动 Flask 应用程序:

setlocal
SET PYTHONPATH=.
python FlaskControlPanel\app.py

setlocal用于确保仅针对此 session 修改 PYTHONPATH

关于python - 如何使用三个使用公共(public)模块的应用程序构建一个 python 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25464649/

相关文章:

java - JSF2 和 Spring AOP

python - 矩阵均值乘以标量向量

python - 如何标准化热图

python - 使用 pandas 将行转换为列

linux - 获取 EC2 实例的 "platform"属性时出错

architecture - 新闻源架构

ssl - 使用 API 构建应用程序

python - 将包含类别的列与包含整数的列合并

python - 如何将两个日期列表合并为一系列日期间隔?

python - 在python中转置数据