如何使用三个使用通用模块的应用程序构建python项目

use*_*r44 7 python architecture module projects-and-solutions python-2.7

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

这三个应用程序都需要使用包含"模型"(保存到数据库的类)和常用设置的模块Common.

我不知道如何构建这个项目.我可以创建三个目录,每个应用程序一个,并将Common复制三次到他们的目录中(似乎不对).

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

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

在之前的项目中,我使用了.NET - 相当于该世界将是一个包含四个项目的解决方案,其中一个是Common.

有什么建议?

And*_*ndy 7

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

project_root/
    App1/
        __init__.py
    FlaskControlPanel/
        app.py
        static/
        templates/
    models/
        __init__.py
        mymodels.py
Run Code Online (Sandbox Code Playgroud)

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

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

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

from models.mymodels import Model1, Model2, Model3
Run Code Online (Sandbox Code Playgroud)

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

from models.mymodels import Model1, Model2, Model3
Run Code Online (Sandbox Code Playgroud)

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

setlocal
SET PYTHONPATH=.
python FlaskControlPanel\app.py
Run Code Online (Sandbox Code Playgroud)

setlocal用于确保PYTHONPATH只修改本次会议.