python 将eel项目打包到exe时出错

ffdz8vbo  于 2023-01-29  发布在  Python
关注(0)|答案(1)|浏览(371)

我正在用Eel构建一个python项目,我试图按照文档中的说明用PyInstaller将我的程序打包成一个可执行文件,但是,当我打开. exe时,我得到了以下错误:

    • 错误**
Traceback (most recent call last):
  File "hello.py", line 1, in <module>
    import eel
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "eel\__init__.py", line 8, in <module>
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "bottle.py", line 73, in <module>
AttributeError: 'NoneType' object has no attribute 'write'

我尝试使用auto py-to-exe而不是Pyinstaller,但我得到了同样的错误。最后,我尝试打包Eel文档中的Eello world示例,以查看是否是我的程序出现了问题,但我仍然得到了同样的错误。我在github问题中找到了similiar problem,但我不知道应该附加什么--add-data。
我运行的是Python 3.10.8和Eel 0.14.0,现在我已经尝试了Python 3.8.9和Python 3.9.13,但没有成功。

    • 更新**

经过进一步的调查,我发现只有当我在cmd python -m eel hello.py web --onefile --noconsole的末尾附加--noconsole时才会出现错误。但是,我希望我的应用程序在没有可见控制台的情况下工作。

wlzqhblo

wlzqhblo1#

您正在使用的其中一个库试图写入sys.stdoutsys.stderr,当您运行带有--windowed选项的pyinstaller时,这两个库被设置为None
您需要尽早在程序代码中显式地将sys.stderr和sys.stdout设置为可写对象,如打开的文件或io缓冲区。
例如:

import sys

outfile = open("logfile.txt", "wt")
sys.stderr = outfile
sys.stdout = outfile

相关问题