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

2024-11-21 08:33:00
admin
原创
4
摘要:问题描述:我正在构建一个 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。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用