我正在用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
时才会出现错误。但是,我希望我的应用程序在没有可见控制台的情况下工作。
1条答案
按热度按时间wlzqhblo1#
您正在使用的其中一个库试图写入
sys.stdout
和sys.stderr
,当您运行带有--windowed
选项的pyinstaller时,这两个库被设置为None
。您需要尽早在程序代码中显式地将sys.stderr和sys.stdout设置为可写对象,如打开的文件或
io
缓冲区。例如: