如何使 Python 脚本独立可执行并运行而无需任何依赖?[重复]

2024-11-21 08:33:00
admin
原创
275
摘要:问题描述:我正在构建一个 Python 应用程序,但不想强迫我的客户安装 Python 和模块。那么,有没有办法将 Python 脚本编译为独立的可执行文件?解决方案 1:您可以使用PyInstaller将 Python 程序打包为独立可执行文件。它适用于 Windows、Linux 和 Mac。PyInst...

问题描述:

我正在构建一个 Python 应用程序,但不想强迫我的客户安装 Python 和模块。

那么,有没有办法将 Python 脚本编译为独立的可执行文件?


解决方案 1:

您可以使用PyInstaller将 Python 程序打包为独立可执行文件。它适用于 Windows、Linux 和 Mac。

PyInstaller 快速入门

从 PyPI 安装 PyInstaller:

pip install pyinstaller

转到程序的目录并运行:

pyinstaller yourprogram.py

这将在名为 的子目录中生成包dist

pyinstaller -F yourprogram.py

添加 -F(或 --onefile)参数将把所有内容打包成单个“exe”。

pyinstaller -F --paths=<your_path>Libsite-packages  yourprogram.py

遇到“ImportError”时,您可能会考虑使用侧包。

 pip install pynput==1.6.8

仍在 Import-Erorr 中运行 - 尝试降级 pyinstaller - 请参阅使用 pynput 和 pyinstaller 时出现错误

有关更详细的演练,请参阅手册。

解决方案 2:

您可以使用已经回答过的py2exe ,并使用Cython将您的密钥.py文件转换为.pycC 编译文件,就像.dll在 Windows 和.soLinux 上一样。

.pyo与普通文件相比,它恢复起来要困难得多.pyc(而且性能也有所提高!)。

解决方案 3:

您可能希望研究一下Nuitka。它获取 Python 源代码并将其转换为 C++ API 调用。然后将其编译为可执行二进制文件(Linux 上为 ELF)。它已经存在了几年,并且支持多种 Python 版本。

如果你使用它,你的性能可能也会得到提升。建议使用它。

解决方案 4:

是的,可以将 Python 脚本编译成独立的可执行文件。

PyInstaller可用于将 Python 程序转换为WindowsLinuxMac OS XFreeBSDSolarisAIX下的独立可执行文件。它是推荐的转换器之一。

py2exe将 Python 脚本转换为仅在 Windows 平台上可执行的脚本。

Cython是 Python 编程语言和扩展 Cython 编程语言的静态编译器。

解决方案 5:

我想汇编一些有关使用 Python 2.7 在 Windows 上创建独立文件的有用信息。

我已经使用过py2exe,它可以运行,但是我遇到了一些问题。

  • 它显示出在 Windows 64 位中创建单个文件的一些问题:使用 bundle_files = 1 与 py2exe 不起作用;

  • 必须创建一个setup.py 文件才能使其工作。http ://www.py2exe.org/index.cgi/Tutorial#Step2 ;

  • 我遇到了依赖关系问题,必须通过在安装文件中导入包来解决;

  • 我无法使它与PyQt一起工作。

最后一个原因让我尝试了PyInstaller http://www.pyinstaller.org/

在我看来,它更好,因为:

  • 它更易于使用。

我建议创建一个包含以下行的 .bat 文件(例如 pyinstaller.exe 必须位于 Windows 路径中):

pyinstaller.exe --onefile MyCode.py

所以,我认为,至少对于 python 2.7 来说,更好、更简单的选择是 PyInstaller。

解决方案 6:

第三个选项是cx_Freeze,它是跨平台的。

解决方案 7:

pyinstaller yourfile.py -F --onefile

这会在 Windows 上创建一个独立的 EXE 文件。

重要提示 1:EXE 文件将在名为“dist”的文件夹中生成。

重要提示 2:不要忘记 --onefile 标志

您可以使用以下方式安装 PyInstallerpip install PyInstaller

在此处输入图片描述

在此处输入图片描述

注意:在极少数情况下,存在隐藏的依赖关系...因此,如果您运行 EXE 文件并出现缺少库错误(下面示例中的 win32timezone),请使用如下命令:

pyinstaller --hiddenimport win32timezone -F "Backup Program.py"

解决方案 8:

我喜欢PyInstaller - 尤其是“窗口化”版本:

pyinstaller --onefile --windowed myscript.py

它将在目标/文件夹中创建一个单独的 *.exe 文件。

解决方案 9:

您可能喜欢py2exe。您还可以在其中找到有关在 Linux 上执行此操作的信息。

解决方案 10:

使用 py2exe....使用以下设置文件:

from distutils.core import setup
import py2exe

from distutils.filelist import findall
import matplotlib

setup(
    console = ['PlotMemInfo.py'],

    options = {
        'py2exe': {
            'packages': ['matplotlib'],
            'dll_excludes': ['libgdk-win32-2.0-0.dll',
                             'libgobject-2.0-0.dll',
            'libgdk_pixbuf-2.0-0.dll']
        }
    },
    data_files = matplotlib.get_py2exe_datafiles()
)

解决方案 11:

我还推荐 PyInstaller,因为它具有更好的向后兼容性,例如 Python 2.3 - 2.7。

对于py2exe,您必须拥有 Python 2.6。

解决方案 12:

由于它似乎在当前答案列表中缺失,我认为值得一提的是,标准库包含一个zipapp可用于此目的的模块。 它的基本用法只是将一堆 Python 文件压缩成一个带有扩展名的 zip 文件,.pyz然后可以直接作为 执行python myapp.pyz,但您也可以从文件创建一个独立的包requirements.txt

$ python -m pip install -r requirements.txt --target myapp
$ python -m zipapp -p "interpreter" myapp

其中interpreter可以是类似的/usr/bin/env python(参见指定解释器)。

通常,生成的.pyz/.pyzw文件应该是可执行文件,在 Unix 中是因为它被标记为可执行文件,而在 Windows 中是因为 Python 安装通常会注册这些扩展。但是,只要用户在路径中,就可以相对轻松地制作一个 Windows 可执行文件。python3.dll

如果您不想要求最终用户安装 Python,您可以将应用程序与可嵌入的 Python 包一起分发。

解决方案 13:

对于 Python 3.2 脚本,唯一的选择是cx_Freeze。从源代码构建它;否则它将不起作用。

对于 Python 2.x,我建议使用 PyInstaller,因为它可以将 Python 程序打包成一个可执行文件,而不像 cx_Freeze 那样还会输出库。

解决方案 14:

py2exe 将生成您想要的 EXE 文件,但您需要在要使用新 EXE 文件的机器上拥有相同版本的 MSVCR90.dll。

请参阅教程以了解更多信息。

解决方案 15:

您可以在“配送公用设施”中找到配送公用设施的列表。

我使用bbfreeze,它运行得很好(尽管还不支持 Python 3)。

解决方案 16:

使用Cython转换为 C,编译并与 GCC 链接。

另一种方法是,用 C 语言编写核心函数(您希望使其难以逆转),编译它们并使用Boost.Python导入编译后的代码(此外,您还可以获得更快的代码执行速度)。然后使用上述任何工具进行分发。

解决方案 17:

不完全是 Python 代码的包装,但是现在也有来自 Google 的Grumpy,它可以将代码转换为Go。

它不支持 Python C API,因此可能不适用于所有项目。

解决方案 18:

使用PyInstaller,我发现了一种更好的方法,即使用 .exe 的快捷方式,而不是制作--onefile。无论如何,可能有一些数据文件,如果您正在运行基于站点的应用程序,那么您的程序也依赖于 HTML、JavaScript 和 CSS 文件。将所有这些文件移动到某个地方没有任何意义……相反,如果我们将工作路径向上移动会怎样?

创建 EXE 文件的快捷方式,将其移至顶部,并按指定设置目标和启动路径,以使相对路径指向dist\folder

Target: %windir%system32cmd.exe /c start distweb_wrapperweb_wrapper.exe
Start in: "%windir%system32cmd.exe /c start distweb_wrapper\"

我们可以将快捷方式重命名为任何名称,因此重命名为“GTFS-Manager”。现在,当我双击快捷方式时,就好像我python运行了文件一样!我发现这种方法比以下方法更好--onefile

  1. 在 onefile 的案例中,Windows 7 操作系统缺少 .dll,需要事先进行安装等。哈欠。使用通常的多个文件构建时,不会出现此类问题。

  2. 我的 Python 脚本使用的所有文件(它正在部署一个 tornado 网络服务器并且需要整个网站的文件!)不需要移动到任何地方:我只需在顶部创建快捷方式即可。

  3. 我实际上可以在Ubuntu(运行python3 myfile.py)和 Windows(双击快捷方式)上使用完全相同的文件夹。

  4. 我不需要费心去对 .spec 文件进行过于复杂的破解来包含数据文件等。

哦,记得在构建后删除构建文件夹。这样可以节省空间。

解决方案 19:

我听说PyRun也是一个选择。它目前支持 Linux、FreeBSD 和 Mac OS X。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用