相关疑难解决方法(0)

使用PyInstaller捆绑数据文件(--onefile)

我正在尝试使用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更新,标记的较新答案正确.

python pyinstaller

88
推荐指数
7
解决办法
8万
查看次数

Pyinstaller添加数据文件

我正在努力使用pyinstaller,每当我使用kivy GUI构建这个特定的脚本并在构建之后运行.exe时我会得到致命的错误,它无法执行脚本.我通过cmd运行它,它给我错误:IOError: [Errno 2] No such file or directory: 'main.kv'

我尝试在启动构建时使用--add-data添加.kv文件以及mdb和dsn文件(在脚本中使用pypyodbc),但这样做我收到错误:( unrecognized arguments: --add-data'main.kv'其余的指定文件为--add-data follow)有没有解决方案或替代方法?

pyinstaller

13
推荐指数
3
解决办法
2万
查看次数

使用 PyInstaller --onefile 打包 kivy 时包含 .kv/.json 文件?

我有一个非常简单的应用程序(只是一个带有标签的窗口),我正在尝试引导自己完成变成单个可执行文件的过程。这是程序目录:

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无法加载时看到过这种情况)。我已经阅读了thisthisthis甚至 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)

python pyinstaller python-3.x kivy kivy-language

6
推荐指数
1
解决办法
2139
查看次数

导出单个 .exe 时,PyInstaller 卡在“Building PKG ...”上

我写了一个 kivy 程序,我想通过 pyinstaller 将它导出到单个 .exe 文件中。我设法导出到多个文件(标准选项),但是当我将 --onefile 选项添加到 pyinstaller 时,进程卡在一行上说:

    INFO: Building PKG (CArchive) out00-PKG.pkg
Run Code Online (Sandbox Code Playgroud)

有谁知道怎么解决?只是时间问题还是我在出口过程中遗漏了什么?

我的项目:

我正在使用 python 3.6.4、kivy 1.9.0 和 pyinstaller 3.3.1。main.py 和 main.kv 文件(我只使用了 2 个文件)都在同一个文件夹中,从现在开始我将其称为 \project_folder\。在同一个文件夹中还有一个名为 icon.ico 的图标。

我也在使用 UPX (upx394a),它被下载到一个名为 \upx_path\upx394a 的文件夹中。

首先,我修改了我的 main.py 文件:

import kivy
import sys
import os

...

def resourcePath():
    if hasattr(sys, '_MEIPASS'):
        return os.path.join(sys._MEIPASS)
    return os.path.join(os.path.abspath("."))

...

if __name__=='__main__':
    kivy.resources.resource_add_path(resourcePath())
    MainApp().run()
Run Code Online (Sandbox Code Playgroud)

对于导出,我运行了一个 Windows 提示;我移动到 \project_folder\ 然后导出:

    pyinstaller main.py --onefile --clean -y --windowed --icon=icon.ico 
    --name MyApp --upx-dir=\upx_path\upx394a --exclude-module _tkinter 
    --exclude-module …
Run Code Online (Sandbox Code Playgroud)

python compilation pyinstaller kivy

6
推荐指数
2
解决办法
3579
查看次数