+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在带有gui的python上使用pyinstaller可以打开和关闭应用程序,而无需执行

发布于2020-09-11 00:37     阅读(1034)     评论(0)     点赞(26)     收藏(5)


我有一个使用kivy并创建gui的python程序。我试图使用pyinstaller使该程序成为可执行文件,但是当我尝试运行exe文件时,它会立即打开并关闭该应用程序。我尝试使用cmd运行该exe,但它只是在另一个窗口中将其打开并立即将其关闭,当在.py文件上使用pyinstaller时,我也尝试使用-c标志,但没有任何变化。我该怎么解决?

编辑:我尝试在第一行中添加一个print(“ hello”),然后在其后立即退出,然后再次创建一个exe,但结果没有改变,文件立即打开并关闭。因此,我尝试使用cmd start /B来运行应用程序,并强制其在cmd中运行,我看到它出现以下错误

C:\Users\YShay\Desktop\New folder\dist>Traceback (most recent call last):
File "C:\Users\YShay\AppData\Local\Programs\Python\Python38\Lib\sitepackages\PyInstaller\loader\rthooks\pyi_rth_pkgres.py", line 13, in <module>
import pkg_resources as res
File "c:\users\yshay\appdata\local\programs\python\python38\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\pkg_resources\__init__.py", line 86, in <module>
ModuleNotFoundError: No module named 'pkg_resources.py2_warn'
[19380] Failed to execute script pyi_rth_pkgres 

这是否意味着pyinstaller无法导入其中一个模块?如果是这样,我如何导入它或使其可用于应用程序?

这些都是我程序的导入:

import socket
import sys
import threading
import psutil
import socket
import subprocess
import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from functools import partial

解决方案


首先,如果您无法在Python 3.8上安装Kivy,则可以通过键入以下内容进行安装:

python -m pip install docutils pygments pypiwin32 kivy_deps.sdl2==0.1.* kivy_deps.glew==0.1.*
python -m pip install kivy_deps.gstreamer==0.1.*
python -m pip install kivy_deps.angle==0.1.*
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew --extra-index-url https://kivy.org/downloads/packages/simple
pip install kivy[base] kivy_examples --pre --extra-index-url https://kivy.org/downloads/simple/

然后,当您将Kivy GUI应用程序与Pyinstaller打包在一起时,您将看到与以下内容有关的错误:

Failed to execute script pyi_rth_pkgres 

只需卸载setuptools并安装版本44.0.0(链接

pip uninstall setuptools

pip install setuptools==44.0.0

另外,打包有些棘手,因为它完成了两个步骤,有关如何使用Pyinstaller打包Kivy的官方指南

导航到Kivy示例目录。对我来说,它看起来像:

C:\ Users \您的Windows用户名\ AppData \ Local \ Programs \ Python \ Python38-32 \ share \ kivy-examples \ demo \ touchtracer

为打包的应用程序创建一个目录,并对其进行cd。然后在此目录中键入:

python -m PyInstaller --name touchtracer C:\Users\YOUR-WINDOWS-USERNAME\AppData\Local\Programs\Python\Python38-32\share\kivy-examples\demo\touchtracer\main.py

您将看到已创建* .spec文件。在文本编辑器中将其打开。

在文件的开头,紧随其后

#-*- mode: python ; coding: utf-8 -*

按Enter键并输入

从kivy_deps导入sdl2,出现问题

确保您的COLLECT如下所示(添加两个Tree):

coll = COLLECT(exe, Tree('examples-path\\demo\\touchtracer\\'),
           a.binaries,
           a.zipfiles,
           a.datas,
           *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
           strip=False,
           upx=True,
           name='touchtracer')

现在回到您的CMD。使用已编辑的规范文件构建应用程序:python -m PyInstaller touchtracer.spec

您编译的exe文件将位于

C:\ Users \您的Windows用户名\ AppData \ Local \ Programs \ Python \ Python38-32 \ share \ kivy-examples \ demo \ touchtracer \ paczka \ dist \ touchtracer

出于包装目的,您现在可以检查exe是否在另一台计算机上工作。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/516751/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

26 0
收藏该文
已收藏

评论内容:(最多支持255个字符)