我正在使用GUI应用程序,并且希望将python代码转换为可执行文件。
作为.py文件运行时,该程序可以正常运行。但是,当我尝试使用pyinstaller --onedir将其转换为.exe时,它将编译我的程序而没有任何错误,但是当我双击.exe时,它将无法正常工作。控制台会立即打开并立即关闭。没有错误,也没有GUI窗口。
即使我改用auto-py-to-exe,相同的问题仍然存在。我被困在这里,不胜感激。谢谢。
编辑:我没有双击.exe,而是尝试从cmd运行它,该错误可以追溯到虚拟环境的站点包中的markdown文件夹。
exec(bytecode, module.__dict__)
File "lib\site-packages\markdown\htmlparser.py", line 30, in <module>
File "<frozen importlib._bootstrap>", line 580, in module_from_spec
AttributeError: 'NoneType' object has no attribute 'loader'
[8788] Failed to execute script app
htmlparser.py文件中的该部分内容如下:
spec = importlib.util.find_spec('html.parser')
htmlparser = importlib.util.module_from_spec(spec)
spec.loader.exec_module(htmlparser)
sys.modules['htmlparser'] = htmlparser
注意:我有(Python == 3.7.9,Pyinstaller == 3.6,auto-py-to-exe == 2.7.8)。我发现了类似的问题here,但没有令人满意的回答。
答案 0 :(得分:0)
在脚本和所有导入的模块上运行pylint。
我只是遇到了同样的问题,这是因为我对导入的模块进行了更改,导致该模块损坏(例如语法错误)。它没有报告导入错误,而是显示“无法执行脚本应用程序”。从技术上讲是正确的,但具有误导性。