Python项目部署设计

Python项目部署设计,python,project-layout,Python,Project Layout,情况是这样的:我现在所在的公司让我可以自由地使用java或python开发我的应用程序。该公司主要有java方面的经验 我已经决定使用python,因此他们非常高兴地要求我对所有与数据库维护相关的python项目/脚本进行维护 处理所有这些事情并不是那么糟糕,与java程序员相比,看看我有多少空闲时间也很有趣。只有一个,但项目布局混乱 公司里有很多脚本只是放在虚拟机中。其中一些模块具有复杂的功能,这些功能分布在几个模块中(最多4个) 在思考这个问题时,我意识到我不知道如何解决这个问题,所以这里有

情况是这样的:我现在所在的公司让我可以自由地使用java或python开发我的应用程序。该公司主要有java方面的经验

我已经决定使用python,因此他们非常高兴地要求我对所有与数据库维护相关的python项目/脚本进行维护

处理所有这些事情并不是那么糟糕,与java程序员相比,看看我有多少空闲时间也很有趣。只有一个,但项目布局混乱

公司里有很多脚本只是放在虚拟机中。其中一些模块具有复杂的功能,这些功能分布在几个模块中(最多4个)

在思考这个问题时,我意识到我不知道如何解决这个问题,所以这里有三个问题

  • 我应该把独立脚本放在哪里?我们使用git作为版本控制系统
  • 如何构造项目的布局,使用户不需要深入挖掘文件夹来运行程序(在java中,我创建了一个jar或jar以及一个shell脚本来处理一些引导操作)
  • 创建易于重用的模块的标准方法是什么(mycompany.myapp.mymodule?)
A是一种创建模块层次结构的方法:如果在目录中创建一个名为
\uuu init\uuuu.py
的文件,Python将该目录视为一个包,并允许您使用点式导入导入其内容:

spam \
       __init__.py
       ham.py
       eggs.py

import spam.ham
包中的模块可以相互引用——请参阅文档

如果这些都是DB维护脚本,我会制作一个名为DB之类的包,并将它们全部放在其中。对于更复杂的包,您可以使用子包。所以,如果你有一个清理事务日志的脚本,我不知道,你可以把它放在
ourDB.clean中,然后执行

import ourDB.clean
ourDB.clean.transaction_logs( )
A是一种创建模块层次结构的方法:如果在目录中创建一个名为
\uuuu init\uuuu.py
的文件,Python会将该目录视为一个包,并允许您使用点式导入导入其内容:

spam \
       __init__.py
       ham.py
       eggs.py

import spam.ham
包中的模块可以相互引用——请参阅文档

如果这些都是DB维护脚本,我会制作一个名为DB之类的包,并将它们全部放在其中。对于更复杂的包,您可以使用子包。所以,如果你有一个清理事务日志的脚本,我不知道,你可以把它放在
ourDB.clean中,然后执行

import ourDB.clean
ourDB.clean.transaction_logs( )
我应该把独立脚本放在哪里

你“按功能”组织它们——基于它们的功能和人们使用它们的原因

语言(Python与Java)是不相关的

您必须将脚本视为关注某些需求的小型应用程序,并为该应用程序创建适当的目录结构

我们使用
/opt/thisapp
/opt/thatapp
。如果需要共享装载点,可以使用不同的路径

如何构造项目的布局,使用户不需要深入挖掘文件夹来运行程序

你“按功能”组织它们——基于它们的功能和人们使用它们的原因。在
/opt/thisapp
目录的顶层,您可能有一个
\uuuu init\uuuu.py
(因为它是一个包)和一个启动实际工作的
main.py
脚本

在Python2.7和Python3中,有
runpy
模块。有了这个你就可以说出你的名字了 顶级主脚本
\uuuu main\uuuuuu.py

创建易于重用的模块的标准方法是什么(mycompany.myapp.mymodule?)

阅读有关
软件包的信息

我应该把独立脚本放在哪里

你“按功能”组织它们——基于它们的功能和人们使用它们的原因

语言(Python与Java)是不相关的

您必须将脚本视为关注某些需求的小型应用程序,并为该应用程序创建适当的目录结构

我们使用
/opt/thisapp
/opt/thatapp
。如果需要共享装载点,可以使用不同的路径

如何构造项目的布局,使用户不需要深入挖掘文件夹来运行程序

你“按功能”组织它们——基于它们的功能和人们使用它们的原因。在
/opt/thisapp
目录的顶层,您可能有一个
\uuuu init\uuuu.py
(因为它是一个包)和一个启动实际工作的
main.py
脚本

在Python2.7和Python3中,有
runpy
模块。有了这个你就可以说出你的名字了 顶级主脚本
\uuuu main\uuuuuu.py

创建易于重用的模块的标准方法是什么(mycompany.myapp.mymodule?)

阅读有关
软件包的信息