在可分发的 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的主要内容,如果未能解决你的问题,请参考以下文章