在可分发的 Python 模块中包含 pdftk

Posted

技术标签:

【中文标题】在可分发的 Python 模块中包含 pdftk【英文标题】:Include pdftk in a distributable Python module 【发布时间】:2012-12-22 00:12:07 【问题描述】:

如何在可分发的 Python 程序中包含 pdftk 和 gsprint?

我已经写了a short Python module,它需要几个源 PDF,重新排列页面,然后将它们打印成正确排序、有用的装订数据包(我也将感谢对模块 over on GitHub 的任何反馈) .这使得一次打印大量这些数据包变得容易得多。我使用pdftk 和gsprint(通过subprocess.call)来整理和打印PDF。

现在,我希望能够将其分发给我在全国其他研究地点的同事。我对它们做了三个假设:

    他们的技术倾向远不如我,因此将 pdftk 和 gsprint 安装到他们的系统路径可能会很困难(假设他们的本地 IT 甚至允许这样的事情); 他们几乎都在使用 Windows。 用户不会安装 Python(实际上有些人会安装,但谁知道呢)

我的 理想 将是一个可执行文件,其中包含一个 Python 解释器、我的模块、pdftk、Ghostscript 和 gsprint。这是否可行,如果可行,如何实现?我看过一些关于使用 C 和 Java 库的教程,但似乎我只是没有词汇和概念知识来解决这个问题。

【问题讨论】:

【参考方案1】:

要创建一个独立的可执行文件,您可以使用pyinstaller ...完全独立,无需任何外部依赖即可运行。

【讨论】:

我不确定这是否会让我打包非 Python 库 - 引用的所有示例都是 Python 模块或通过 ctypes 使用的 C 库。抱歉,如果我遗漏了一些明显的东西...... 谢谢。这是Google Group question,更详细地解决了我的具体情况;我会试一试,但看起来这应该可行。谢谢。【参考方案2】:

您需要冻结您的 Python 项目,为此使用冷冻机:

http://cx-freeze.sourceforge.net/ http://www.py2exe.org/

任务通常很简单,只需执行一个简单的命令,如cxfreeze main.py --target-dir dist 或创建一个setup.py 文件,其中会调用冷冻机的特定方法。在大多数情况下,它会自动计算依赖关系,但请查看文档。

【讨论】:

以上是关于在可分发的 Python 模块中包含 pdftk的主要内容,如果未能解决你的问题,请参考以下文章

在可执行文件中包含引用

第 8 章: 模块, 包与分发---Word

使用 Maven 在可执行 JAR 中包含签名库

在可执行的 .jar 文件中包含 excel

如何在可执行文件中包含带有 pyinstaller 的特定 .jar 文件?

如何在 Python 的 setup.py 中包含和安装本地依赖项?