如何打包/分发python应用程序

时间:2014-07-09 14:17:19

标签: python binary package

我花了无数个小时试图理解这一点,不幸的是我还没有得到答案。或者至少我认为我没有。 首先,我应该说我是Java开发人员。我最近才开始使用Python,构建过程对我来说有点奇怪。

在我看来,我编写了一个应用程序,我将其编译为运行,然后将其打包成.jar供其他人使用。既可以作为图书馆,也可以作为最终用户执行并享受乐趣。 (忽略像maven或gradle这样的东西......)

我在python中编写了一个包含~6个文件的CLT,我想分发它。从我能找到的,我应该写一个setup.py,我找到了一些关于如何做到这一点的指南但是......说实话我甚至不确定那是做什么的。我可以将我的源代码捆绑到带有其他元数据的tar.gz中,否则会产生一些我不知道该怎么做的奇怪文件。

然后我找到了PyInstaller,将所有内容打包成二进制文件效果很好。但是我在尝试创建Debian软件包时遇到了一些问题,它让我重新评估并质疑Python中似乎没有什么东西(不必使用外部工具)让我打包/ bundle /将我的应用程序放入要运行的单个文件中。

这是我无法理解的事情。我的意思是......在有像PyInstaller和P2Exe之类的工具之前,什么不是,人们如何分发他们的应用程序?我是否应该编写一个C应用程序,以某种方式在那里包含python代码并编译它?对不起,如果这似乎是一个愚蠢的问题,但我真的在问。我已经搜索过这么多,花了很多时间在上面,并没有找到满意的答案,所以我希望有人可以帮助我!感谢。

1 个答案:

答案 0 :(得分:0)

如果您将Python代码打包为pip,则可以包含一些启动程序的可执行脚本。我不知道5年前问这个问题时的情况如何,但是如今pip已经与Python集成在一起,以至于有一个标准的库模块可以引导pip以防万一。它丢失了: https://docs.python.org/3/library/ensurepip.html

如果要为其他软件包管理器(例如Anaconda或各种Linux发行版的软件包管理器)打包应用程序,或者作为Windows安装程序,情况就有所不同。显然,您必须为要支持的每种软件包管理器或安装技术创建一个单独的软件包。