gpt4 book ai didi

python - 如何将所有资源编译成一个可执行文件?

转载 作者:太空狗 更新时间:2023-10-30 00:30:31 25 4
gpt4 key购买 nike

我用 python 编写了 GTK 应用程序。

所有图形用户界面都在 glade 文件中,并且使用了一些图像。我希望将我的应用程序编译成可执行文件。为此,我正在使用 PyInstaller 编译器和 UPX 打包机。

我已经按照手册说的做了:

python Configure.py
python Makespec.py --onefile --windowed --upx /path/to/yourscript.py
python Build.py /path/to/yourscript.spec

PyInstaller 完美运行并创建一个 exe 文件。但是为了使我的应用程序正常工作,我必须将我的 gladeimage 文件复制到 exe 的文件夹中。

有什么方法可以将这些文件编译成可执行文件吗?

我以各种方式编辑了我的规范文件,但我无法实现我想要的。下面的spec文件只是复制文件到目录,并没有编译成可执行文件

# -*- mode: python -*-
a = Analysis([os.path.join(HOMEPATH,'support\\_mountzlib.py'), os.path.join(HOMEPATH,'support\\useUnicode.py'), 'r:\\connection\\main.py'],
pathex=['C:\\Documents and Settings\\Lixas\\Desktop\\pyinstaller-1.5-rc1'])

pyz = PYZ(a.pure)

exe = EXE( pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name=os.path.join('dist', 'NetworkChecker.exe'),
debug=False,
strip=False,
upx=True,
console=False,
icon='r:\\connection\\ikona.ico' )

coll = COLLECT(
exe,
[('gui.glade', 'r:\\connection\\gui.glade', 'DATA')],
[('question16.png', 'r:\\connection\\question16.png', 'DATA')],
# a.binaries,
# strip=False,
upx=True,
name='distFinal')

我希望只有一个包含所有内容的可执行文件

最佳答案

PyInstaller 确实允许您将所有资源捆绑到 exe 中,而无需将数据文件转换为 .py 文件的棘手操作——您的 COLLECT 对象似乎是正确的,棘手的步骤是访问这些文件在运行时。 PyInstaller 会将它们解压到一个临时目录中,并通过 _MEIPASS2 变量告诉您​​它们的位置。要在开发模式和打包模式下获取文件路径,我使用这个:

def resource_path(relative):
return os.path.join(
os.environ.get(
"_MEIPASS2",
os.path.abspath(".")
),
relative
)


# in development
>>> resource_path("gui.glade")
"/home/shish/src/my_app/gui.glade"

# in deployment
>>> resource_path("gui.glade")
"/tmp/_MEI34121/gui.glade"

关于python - 如何将所有资源编译成一个可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6689410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com