如何使 Python 脚本独立可执行并运行而无需任何依赖?[重复]
- 2024-11-21 08:33:00
- admin 原创
- 5
问题描述:
我正在构建一个 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
文件转换为.pyc
C 编译文件,就像.dll
在 Windows 和.so
Linux 上一样。
.pyo
与普通文件相比,它恢复起来要困难得多.pyc
(而且性能也有所提高!)。
解决方案 3:
您可能希望研究一下Nuitka。它获取 Python 源代码并将其转换为 C++ API 调用。然后将其编译为可执行二进制文件(Linux 上为 ELF)。它已经存在了几年,并且支持多种 Python 版本。
如果你使用它,你的性能可能也会得到提升。建议使用它。
解决方案 4:
是的,可以将 Python 脚本编译成独立的可执行文件。
PyInstaller可用于将 Python 程序转换为Windows、Linux、Mac OS X、FreeBSD、Solaris和AIX下的独立可执行文件。它是推荐的转换器之一。
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
您可以创建一个文件,以及其他选项(https://pyinstaller.readthedocs.io/en/stable/usage.html#options)。
我在使用 PyInstaller 和多处理包时只遇到了一个问题,可以通过以下方法解决:https ://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing 。
所以,我认为,至少对于 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
:
在 onefile 的案例中,Windows 7 操作系统缺少 .dll,需要事先进行安装等。哈欠。使用通常的多个文件构建时,不会出现此类问题。
我的 Python 脚本使用的所有文件(它正在部署一个 tornado 网络服务器并且需要整个网站的文件!)不需要移动到任何地方:我只需在顶部创建快捷方式即可。
我实际上可以在Ubuntu(运行
python3 myfile.py
)和 Windows(双击快捷方式)上使用完全相同的文件夹。我不需要费心去对 .spec 文件进行过于复杂的破解来包含数据文件等。
哦,记得在构建后删除构建文件夹。这样可以节省空间。
解决方案 19:
我听说PyRun也是一个选择。它目前支持 Linux、FreeBSD 和 Mac OS X。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件