Python运行所需的最低限度文件/库是什么?

时间:2019-03-20 19:55:42

标签: python

我是Python的新手,它来自专有的编译语言(Xojo),可生成自包含的可执行文件。

我了解Python是一种解释语言。据我了解,它需要一个解释器(坚持使用CPython),并且大概需要许多附件框架/ C库才能运行。我不明白的是,为什么要创建一个包含解释器以及所有必需文件和库的文件夹,然后将它们与我的脚本捆绑在一起以进行分发如此困难。

我发现有很多尝试执行此操作的工具(py2app,cx_freeze等),但是其中许多工具似乎已损坏,无法维护或确实有故障。

我想我的问题是:是否有任何文档描述我需要与“ Hello World”脚本捆绑在一起以运行它的确切内容?这似乎是一个非常简单的问题,但尚未解决(这表明它比我理解的要复杂得多)。

3 个答案:

答案 0 :(得分:3)

我的理解是,PyInstaller works fine for making a single exe for distribution。但是,除非这样的包装工具,否则通常没有明显的“最低限度”;这些模块没有文档说明的依赖性,因此通常最好提供整个标准库。

通常,如果需要可再发行版本,请使用the embedded Python zip redistributable,将Python与主应用程序一起发送。

答案 1 :(得分:3)

文件/库的确切列表取决于python解释器的构建方式。例如,在Windows中,您可以获得从Visual Studio,Cygwin和Mingw-w64构建的CPython二进制文件。它们具有不同的原因依赖性。在Linux发行版中,通常默认情况下会安装python。

下面是official CPython release for windows中可以找到的.dll.exe文件的列表。

libcrypto-1_1-x64.dll  python.exe   python37.dll  sqlite3.dll
libssl-1_1-x64.dll     pythonw.exe  python3.dll   vcruntime140.dll

此ZIP文件版本的总大小仅为6.7 MB。因此,将其捆绑在您的主要可执行文件中很容易。您可以使用手头的任何捆绑程序,而不必使用为python设计的捆绑程序。引用文档here

  

将嵌入式发行版提取到应用程序安装的子目录中足以提供可加载的Python解释器。

答案 2 :(得分:-6)

使用python的一个很好的入门方法是使用Anaconda https://www.anaconda.com/distribution/#download-section-此发行版包含CPython解释器和最常用的软件包。相当长的一段时间您将不会安装更多软件包。

要制作简单的可分发代码,只需在代码中包含requirements.txt即可,其中应列出您在代码中使用的软件包(和版本)。

更多详情,请访问https://www.idiotinside.com/2015/05/10/python-auto-generate-requirements-txt/

pip冻结会在您的运行环境中生成所有程序包的超集,因此理想情况下,请使用链接中的第二个更聪明的选项:pipreqs

因此,简而言之,除了您的代码外,还需要一个额外的requirements.txt,这样人们就可以使用

安装所有必需的软件包。

pip install -r requirements.txt

并且很好运行代码。

对于高级方案,您可能希望查找使用conda创建虚拟环境的方法。 什么是conda环境? https://docs.conda.io/projects/conda/en/latest/user-guide/concepts.html#conda-environments

如何创建/管理conda环境 https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html

Python之旅中一切顺利!