这是情况:我现在正在工作的公司使我可以自由与Java或Python合作开发我的应用程序。该公司主要在Java经验。

我已经决定与Python一起去,所以他们很高兴要求我对与他们拥有的数据库维护有关的所有Python项目/脚本进行维护。

处理所有这些东西和有趣的乐趣是我的空闲时间与Java程序员相比,这并不糟糕。只有一个,但是项目布局是一团糟。

整个公司的虚拟机都有许多脚本。其中一些具有复杂的功能,这些功能分布在几个模块上(最大为4个)。

在考虑它时,我意识到我不知道如何解决这个问题,所以这里有3个问题。

  • 我在哪里放置独立的脚本?我们使用GIT作为我们的版本系统。
  • 如何以用户不需要深入挖掘文件来运行程序的方式构建项目的布局(在Java中,我创建了一个jar或jar和shell脚本来处理一些引导程序操作。)
  • 什么是创建可以轻松可重复使用的模块的标准方法(mycompany.myapp.mymodule?)
有帮助吗?

解决方案

我在哪里放置独立的脚本?

您根据他们的工作以及人们为什么使用它们来组织它们。

语言(Python vs. Java)是无关紧要的。

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

我们用 /opt/thisapp/opt/thatapp. 。如果您想要共享的安装点,则可以使用其他路径。

如何以用户不需要深入挖掘文件夹来运行程序的方式构建项目的布局

您根据他们的工作以及人们为什么使用它们来组织它们。在最高的 /opt/thisapp 目录,您可能有一个 __init__.py (因为这是一个包裹),也许是 main.py 脚本开始了真正的工作。

在Python 2.7和Python 3中,您有 runpy 模块。有了这个,您将命名您的顶级主脚本 __main__.py

http://docs.python.org/library/runpy.html#module-runpy

什么是创建可以轻松可重复使用的模块的标准方法(mycompany.myapp.mymodule?)

阅读 packages. http://docs.python.org/tutorial/modules.html#packages

其他提示

一种 包裹 是创建模块层次结构的一种方式:如果您制作一个名为的文件 __init__.py 在目录中,Python将将该目录视为包装,并允许您使用虚线导入导入其内容:

spam \
       __init__.py
       ham.py
       eggs.py

import spam.ham

软件包内部的模块可以互相引用 - 请参阅文档。

如果这些都是DB维护脚本,我将制作一个称为DB或其他内容的软件包,然后将它们全部放入其中。您可以为更复杂的子弹包装。因此,如果您有一个脚本,我不知道,清理交易日志,则可以将其放入 ourDB.clean 并做

import ourDB.clean
ourDB.clean.transaction_logs( )
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top