我正在尝试使用PyInstaller构建一个单文件EXE,它包含一个图像和一个图标.我无法为我的生活而努力--onefile.
如果我这样做--onedir,一切工作都很顺利.当我使用时--onefile,它找不到引用的附加文件(运行编译的EXE时).它找到了DLL和其他一切都很好,只是不是两个图像.
我查看了运行EXE时生成的temp-dir(\Temp\_MEI95642\例如),文件确实在那里.当我将EXE放入该临时目录时,它会找到它们.非常困惑.
这是我添加到.spec文件中的内容
a.datas += [('images/icon.ico', 'D:\\[workspace]\\App\\src\\images\\icon.ico', 'DATA'),
('images/loaderani.gif','D:\\[workspace]\\App\\src\\images\\loaderani.gif','DATA')]
Run Code Online (Sandbox Code Playgroud)
我应该补充一点,我也试过不把它们放在子文件夹中,没有什么区别.
编辑: 由于PyInstaller更新,标记的较新答案正确.
没有在kivy论坛得到回复,所以试试这里.
当我将教程pong代码编译为一个文件可执行文件时,我仍然必须将pong.kv文件包含在同一个文件夹中才能运行.否则,启动exe时出现以下错误:
GL: EXT_framebuffer_object is supported
[INFO ] [GL ] OpenGL version
[INFO ] [GL ] OpenGL vendor
[INFO ] [GL ] OpenGL renderer
[INFO ] [GL ] OpenGL parsed version: 2, 1
[INFO ] [GL ] Shading version
[INFO ] [GL ] Texture max size
[INFO ] [GL ] Texture max units
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed,
single mode, not docked
Traceback (most recent call last):
File … 什么是sys._MEIPASS.这个变量的价值是什么?它的用途是什么?我是一个看起来一个python脚本,但当我在eclipse(pydev)上运行它.它显示错误.
我有一个非常简单的应用程序(只是一个带有标签的窗口),我正在尝试引导自己完成变成单个可执行文件的过程。这是程序目录:
brainfreeze/
main.py # simple app
main.kv # kv language style sheet
config/
settings.json # json settings panel data (F1 bound)
saving_to/
(empty at start)
Run Code Online (Sandbox Code Playgroud)
我已经成功地使用 PyInstaller 将程序编译为可执行文件,但只使用了他们文档中描述的一个文件夹捆绑方法;我希望改用一个文件包方法。到目前为止,当我编译时,应用程序启动但它是黑屏(传统上我在main.kv无法加载时看到过这种情况)。我已经阅读了this、this、this甚至 PyInstaller文档,但没有成功编译为单个可执行文件。这是 prog_test.spec:
# -*- mode: python -*-
from kivy.deps import sdl2
from kivy.deps import glew
block_cipher = None
a = Analysis(['..\\brainfreeze\\main.py'],
pathex=['H:\\TestBed\\single_exe_test'],
binaries=[],
data=[],
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)
a.datas += [('../brainfreeze/main.kv', 'DATA'), …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用pyinstaller 构建一个非常基本的python脚本:print 'hello world!'我正在尝试创建一个数据文件或二进制文件可用的数据文件目录.
我一遍又一遍地阅读文档,我尝试使用1.5,2.0和2.0版本的dev构建,我尝试使用--onefile和--onedir构建,我尝试在OS X上构建Linux,但由于某种原因,我的.spec文件中的datafile/tree语句似乎被忽略了.
以下是我尝试过的一些.spec文件变体:
coll = COLLECT(exe,
a.binaries
[('README','/Users/username/my_little_app/foo','DATA')],
Tree('/Users/username/my_little_app/foo','foo'),
Tree('/foo','foo'),
Tree('my_little_app/foo','foo'),
[('my_xml_file.xml','my_little_app/partner.xml','DATA')],
a.zipfiles,
a.datas,
strip=None,
upx=True,
name=os.path.join('dist', 'my_little_app'))
a.datas += [('my_xml_file.xml', '/Users/username/my_little_app/my_xml_file.xml', 'DATA')]
Run Code Online (Sandbox Code Playgroud)
有什么我想念的吗?
我正在尝试将图像添加到Pyinstaller生成的一个文件中。我读过很多这样的问题/论坛,一个和一个和它仍然不工作。
我知道对于一个文件操作,Pyinstller会生成一个temp文件夹,可以通过来访问sys.MEIPASS。但是我不知道我应该在脚本的确切位置添加此内容 sys.MEIPASS。
请显示以下内容:
1- 在何处以及如何 sys.MEIPASS添加?在python脚本中,还是在spec文件中?
2-使用的确切命令是什么?我试过了
pyinstaller --onefile --windowed --add-data="myImag.png;imag" myScript.py
Run Code Online (Sandbox Code Playgroud)
要么
pyinstaller --onefile --windowed myScript.py
Run Code Online (Sandbox Code Playgroud)
然后将('myImag.png','imag')添加到规格文件中,然后运行
pyinstller myScript.spec
Run Code Online (Sandbox Code Playgroud)
没有一个工作。
注意:我在Windows 7下有python 3.6