Pyinstaller noconsole选项使exe致命错误[已解决]

问题描述 投票:0回答:1

嗨,我对编程非常陌生。我使用Anaconda虚拟环境进行了加密,然后

python 3.5.6,pyinstaller 3.5,硒3.141,pyqt5 5.13.2,pymysql 0.9.3

它在原子上工作正常。而且当我这样做时也可以正常工作>

pyinstaller --onefile myapp.py

但是当我这样做的时候>

pyinstaller --noconsole --onefile myapp.py

在命令提示符下,它表示已成功完成。但是当我单击myapp.exe时,出现致命错误的按摩盒。如下所示

fatal error detected

failed to execute script MyScript

我搜索了很多,但找不到原因。


我做了一些工作,https://stackoverflow.com/a/47229908/12471379仍然不知道如何解决。


01.07.20

现在运行myapp.exe时,我什么也没收到,甚至cmd上的devTool也没有

[由pyinstaller --onefile myapp.py制作]

仍然无法与--noconsole一起使用


01.08.20

我刚刚做了新的venv,做了

pyinstaller --noconsole --onefile --noupx myapp.py

我得到的唯一警告是

23142 INFO: Loading module hook "hook-PyQt5.py"...
23352 WARNING: Hidden import "sip" not found!

但是因为这只是警告。我无视这个。而且不工作快疯了。...


01.09.20问题解决了。

我是如此愚蠢。。我相信这是因为我对编程很陌生我将离开此位置,这样任何初学者都不会犯与我相同的错误。

如果您不是英语母语者。您可能会在脚本中更改一些unicode。像这样

import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')

我只是复制并粘贴我的演讲视频中的内容。所以对此一无所知。仍然不知道我认为这会将翻译错误翻译成我的语言。

问题是这部分。

import io
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')

不知道为什么。我只是删除它。并将servier.py更改为https://stackoverflow.com/a/51118530/12471379

pyinstaller --clean --noconsole --onefile --noupx myapp.py多>

工作!!

我知道这是非常基本的错误。但我希望这可以对一些初学者有所帮助。

嗨,我对编程非常陌生。我使用Anaconda虚拟环境和python 3.5.6,pyinstaller 3.5,selenium 3.141,pyqt5 5.13.2,pymysql 0.9.3进行了编程,在原子上可以正常工作。还有...

似乎您的问题与系统标准输出和标准错误sys.stdoutsys.stderr的编码的重新配置有关。

如果您仍想更改stdoutstderr的编码,则以下代码应该起作用(不停止将pyinstaller--noconsole选项一起使用):

import codecs
if sys.stdout.encoding != 'UTF-8':
    sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer, 'strict')
if sys.stderr.encoding != 'UTF-8':
    sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict')
pyinstaller
1个回答
0
投票

似乎您的问题与系统标准输出和标准错误sys.stdoutsys.stderr的编码的重新配置有关。

© www.soinside.com 2019 - 2024. All rights reserved.