如何将python脚本编译为二进制可执行文件
我需要将Python脚本转换为Windows可执行文件 我已将Python 2.6安装到如何将python脚本编译为二进制可执行文件,python,compilation,executable,Python,Compilation,Executable,我需要将Python脚本转换为Windows可执行文件 我已将Python 2.6安装到python26 我创建了一个脚本,并将其保存在C:\pythonscript中。在这个文件夹中有两个文件 Setup.py和oldlogs.py(此文件需要转换) setup.py代码为 from distutils.core import setup import py2exe setup(console=['oldlogs.py']) 如何将oldlogs.py转换为exe文件?或用作。这是一个好主
python26
我创建了一个脚本,并将其保存在C:\pythonscript
中。在这个文件夹中有两个文件
Setup.py
和oldlogs.py
(此文件需要转换)
setup.py
代码为
from distutils.core import setup
import py2exe
setup(console=['oldlogs.py'])
如何将oldlogs.py转换为exe文件?或用作。这是一个好主意。PyInstaller还允许您为linux和mac创建可执行文件
以下是如何使用PyInstaller轻松解决当前问题:
pyinstaller oldlogs.py
从工具的文档中:
PyInstaller分析myscript.py和:
- 在与脚本相同的文件夹中写入myscript.spec
- 如果不存在,则在与脚本相同的文件夹中创建文件夹生成
- 在生成文件夹中写入一些日志文件和工作文件
- 如果不存在,则在与脚本相同的文件夹中创建文件夹dist
- 在dist文件夹中写入myscript可执行文件文件夹
utils/Makespec.py [--onefile] oldlogs.py
它创建一个yourprogram.spec文件,该文件是用于生成最终exe的配置。下一个命令从配置文件生成exe:
utils/Build.py oldlogs.spec
更多信息可以找到因为其他SO答案链接到这个问题,值得注意的是,现在还有另一个选项 这是一个rust实用程序,其工作方式与pyinstaller相同,但有一些额外的详细功能,以总结关键功能:
- 默认情况下,所有包的单个二进制文件,能够将模块零拷贝加载到内存中,而pyinstaller在使用
模式时将模块提取到临时目录中onefile
- 生成静态链接二进制文件的能力
总的来说,pyinstaller比PyOxizer使用起来简单得多,PyOxizer通常需要配置文件中的一些复杂性,而且它不是Pythony,因为它是用Rust编写的,并且使用的配置文件格式在Python世界中不太常见,但PyOxizer做了一些更高级的事情,特别是如果您希望生成单个二进制文件(这不是pyinstaller的默认设置)。请看它的完整性,这是另一个可以用于此目的的工具(以及pyinstaller和py2exe,其他答案已经提到)。的可能副本更好,它甚至支持python 3.3。嘿,这甚至可以与,至少达到支持Windows XP的python 3.4版。真的很棒!我用wine、python 3.4和pip Win(只需按照pyinstaller网站上的安装说明)在我的Fedora Linux机器上创建了一个windows可执行文件。@AshwiniChaudhary,两者似乎都是跨平台的。。然而,如果我必须根据
GitHub
stars快速判断使用哪一个,PyInstaller
有大约4000个星,cx\u Freeze
有200个星。因此,PyInstaller
似乎更受欢迎,可能涵盖了更多的边缘案例。为什么您认为cx\u Freeze
比PyInstaller
好?请注意,与PyInstaller相比,“cx\u Freeze不支持构建单个文件exe,其中应用程序的所有库都嵌入到一个可执行文件中。”
# -*- mode: python -*-
block_cipher = None
a = Analysis(['SCRIPT.py'],
pathex=[
'folder path',
'C:\\Windows\\WinSxS\\x86_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.17134.1_none_50c6cb8431e7428f',
'C:\\Windows\\WinSxS\\x86_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.17134.1_none_c4f50889467f081d'
],
binaries=[(''C:\\Users\\chromedriver.exe'')],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='NAME OF YOUR EXE',
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )