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

Are*_*rte 6 python binary package

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

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

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

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

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

Rol*_*ber 1

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

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