【问题标题】:standalone script or as module? [closed]独立脚本还是作为模块? [关闭]
【发布时间】:2014-09-04 06:40:47
【问题描述】:

在选择制作模块/包或保持脚本独立时,我总是进退两难。

我经常用 Perl 或 Python 编写一些小的脚本/程序来完成一些工作。有时我在几个程序中使用相同的子程序,但它们只是小子程序,这就是我的困境。

如果我保持我的脚本独立,任何人都可以在不安装任何包的情况下运行它。如果它是单个文件,则可以在任何地方使用。但是,如果我制作一个模块,我的用户将需要在使用我的脚本之前安装它。我需要考虑依赖模块不可用的例外情况,以后用户可能会在安装所需模块的过程中遇到问题。

所以,为了避免依赖问题。我更喜欢有一点冗余并且不使用任何额外的包(只有在我能做到的情况下。显然我不会在我的所有脚本中重新实现XML::Twig,但我可以为 INI 解析器或 Perl 到 JSON 转换器做到这一点)。

另外,我通常将所有脚本放在同一目录中,例如/usr/local/mycompany/bin

对于不超过 200 行且由少于 20 人使用的脚本/程序,最佳策略是什么?

编辑:

我不是在征求个人意见。我只是从那些有良好编程经验的人那里寻找一个非常务实和理性的答案。

给你一个更具体的例子。我有一个以专有格式解析配置文件的脚本。我公司的很多人都使用这种格式。但是,只有我的脚本使用我的解析器。我想我只有三个选择:

  1. 在我的 5 个脚本中的每一个中放置解析器(大约 50 行)。
  2. 制作一个需要安装在 Perl/Python 发行版中的好模块。
  3. 使用与其他脚本位于同一目录中的独立库。

【问题讨论】:

  • 我想知道programmers.stackexchange.com 的人是否有一些见解。
  • 回复。 “如果我让我的脚本保持独立,任何人都可以在不安装任何软件包的情况下运行它。”我一直在编写需要安装模块的 Perl 脚本,即使这些脚本本身不是模块。似乎您真正要问的不是您应该编写脚本还是模块,而是您是否应该避免外部依赖项。这仍然是一个主观问题,完全取决于您的公司,谁将使用代码,它是如何分发的,谁将维护它等等。

标签: python perl module packages


【解决方案1】:

错误的困境。您可以同时进行这两项操作。

您可以制作一个将在脚本中使用的模块,然后在部署脚本时将其包含在其中。要么将其作为本地模块文件包含,要么将模块和脚本实际汇总到一个文件中。

这样,您的东西不需要单独安装任何模块。

【讨论】:

  • 非常有趣的答案! Perl 是否存在将程序及其依赖项合并到独立包的工具?
  • 是的,检查pp
  • 还有fatpack
  • “本地模块文件”是什么意思?
  • @AntoinePinsard 您可以将 *.pm 文件放在您喜欢的任何文件夹中 - 即将其包含在与 *.pl 文件相同的文件夹中或与它一起的子文件夹中。
猜你喜欢
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
  • 1970-01-01
  • 1970-01-01
  • 2017-08-19
  • 2014-10-06
  • 2023-03-17
相关资源
最近更新 更多