使用多个入口点和集中(config)文件构建python项目

2024-10-05 10:18:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一堆python脚本,它们一起工作,例如tool1.py将一些数据加载到数据库表中,tool2.py从这个表中读取数据,进行一些计算并将结果写入另一个表中,daemon1.py是一个为结果提供服务的web服务器。每个工具和守护进程都有一大堆支持文件(这些文件只对一个工具需要),并且需要自己的目录。此外,我确实在所有工具之间共享了一些代码,例如配置.py以及数据库.py. 直觉上,我对项目的结构如下:

/README.md
/requirements.txt
/config.py # contains shared configuration
/database.py # shared code to connect to the database
/tool1/
    tool1.py # entrypoint
    [...] # bunch of other files only needed by tool1
/tool2/
    tool2.py #entrypoint
    [...] # bunch of other files only needed by tool2
/deamon1/
    daemon1.py #entrypoint
    [...] # bunch of other files only needed by daemon1

然后我使用命令python tool1/tool1.py运行我的工具和守护程序。但是这里的问题是tool1.py如何访问config.py/数据库.py。我考虑了以下选项,对python中被认为是“正确”的方法感兴趣,或者我可能遗漏的任何替代方法(也许是项目布局的另一种方式)。额外的业力将因链接到权威答案而得到奖励。在

  1. 符号链接config.py/数据库.py文件放入子目录。不太喜欢它,因为它让我的编辑感到困惑,而且似乎使事情变得比必要的复杂。在
  2. 制造config.py/数据库.py安装在我的virtualenv中。我不喜欢它,因为我也经常更改这些文件,而且我想将它们保存在同一个git repo中。在
  3. 改变系统路径在tool1.py的顶部。这将在每个文件的顶部生成4行,再加上导入sysos模块的原因只是为了设置这些项。在
^{pr2}$
  1. 将顶层路径添加到$PYTHONPATH
  2. 为tool1.py/tool2.py/daemon1.py创建顶层入口点,如下所示(在将tool1目录重命名为tool1dir之后)
^{3}$
  1. 把config.py/数据库.py放入单独的包中,并从每个subdir中符号链接该目录。在

如前所述,想听听Python如何做到这一点,或任何建议或偏好。在


Tags: 文件工具ofpy目录config数据库only

热门问题