似乎您的问题与系统标准输出和标准错误sys.stdout
和sys.stderr
的编码的重新配置有关。
嗨,我对编程非常陌生。我使用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.stdout
和sys.stderr
的编码的重新配置有关。
如果您仍想更改stdout
和stderr
的编码,则以下代码应该起作用(不停止将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')
似乎您的问题与系统标准输出和标准错误sys.stdout
和sys.stderr
的编码的重新配置有关。