使用 pyinstaller [eel] 编译应用程序时出错
Posted
技术标签:
【中文标题】使用 pyinstaller [eel] 编译应用程序时出错【英文标题】:error while compiling application with pyinstaller [eel] 【发布时间】:2021-12-12 12:50:33 【问题描述】:之前,当使用 pyinstaller 编译脚本时,一切都很好。我就是这样跑的。
python -m eel stat1.py web --onefile --noconsole
现在我收到此错误。可能是什么问题呢?我曾经在 python 3.7 中构建应用程序,现在 3.9 脚本本身是通过控制台启动的。
使用主脚本 'stat1.py' 和 web 文件夹构建可执行文件 '网络'...
运行:pyinstaller stat1.py --hidden-import bottle_websocket --add-data C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\eel\eel.js;eel --add-data web;web --onefile --noconsole
720 信息:PyInstaller:4.5.1 720 信息:Python:3.9.4 720 信息: 平台:Windows-10-10.0.19041-SP0 720 信息:写 C:\Users\vadim.sharoikin\Desktop\stat\stat1.spec 728 信息:UPX 不是 可用的。 730 信息:使用路径扩展 PYTHONPATH ['C:\Users\vadim.sharoikin\Desktop\stat', 'C:\Users\vadim.sharoikin\Desktop\stat'] 致命的 Python 错误: init_import_site:导入站点模块 Python 运行时失败 状态:已初始化 Traceback(最近一次调用最后一次):文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site.py", 第 73 行,在 导入操作系统文件“C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\os.py”, 第 27 行,在 将 stat 导入为 st 文件“C:\Users\vadim.sharoikin\Desktop\stat\stat.py”,第 1 行,在 导入 pyodbc、日期时间、时间、eel、jinja2 文件“C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\eel_init_.py” , 第 5 行,在 从 gevent.threading 导入计时器文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\gevent_init_.py", 第 62 行,在 import socket # pylint:disable=unused-import,useless-suppression File "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\socket.py", 第 67 行,在 all.extend(os._get_exports_list(socket)) AttributeError: 部分初始化的模块 'os' 没有属性 'get_exports_list' (很可能是由于循环导入)811 INFO:检查分析 811 信息:构建分析,因为 Analysis-00.toc 不存在 811 INFO:正在初始化模块依赖关系图... 811 INFO:缓存模块 图挂钩... 821 INFO:分析 base_library.zip ... 致命的 Python 错误:init_import_site:导入站点模块 Python 失败 运行时状态:已初始化 Traceback(最近一次调用最后一次):文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site.py", 第 73 行,在 导入操作系统文件“C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\os.py”, 第 27 行,在 将 stat 导入为 st 文件“C:\Users\vadim.sharoikin\Desktop\stat\stat.py”,第 1 行,在 导入 pyodbc, datetime,time,eel, jinja2 文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\eel_init .py", 第 5 行,在 从 gevent.threading 导入计时器文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\gevent_init.py", 第 62 行,在 import socket # pylint:disable=unused-import,useless-suppression File "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\socket.py", 第 67 行,在 all.extend(os._get_exports_list(socket)) AttributeError: 部分初始化的模块 'os' 没有属性 'get_exports_list' (很可能是由于循环导入)致命的 Python 错误: init_import_site:导入站点模块 Python 运行时失败 状态:已初始化 Traceback(最近一次调用最后一次):文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site.py", 第 73 行,在 导入操作系统文件“C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\os.py”, 第 27 行,在 将 stat 导入为 st 文件“C:\Users\vadim.sharoikin\Desktop\stat\stat.py”,第 1 行,在 导入 pyodbc, datetime,time,eel, jinja2 文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\eel_init .py", 第 5 行,在 从 gevent.threading 导入计时器文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\gevent_init.py", 第 62 行,在 import socket # pylint:disable=unused-import,useless-suppression File "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\socket.py", 第 67 行,在 all.extend(os._get_exports_list(socket)) AttributeError: 部分初始化的模块 'os' 没有属性 'get_exports_list' (很可能是由于循环导入) 3796 INFO:处理预查找 模块路径挂钩 distutils 来自 'C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\PyInstaller\hooks\pre_find_module_path\hook-distutils.py'。 3796 信息:distutils:重定向到非 venv 目录 'C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib' 11296 信息:缓存模块依赖关系图... 11467 信息:正在运行 分析 Analysis-00.toc 11477 信息:添加 Microsoft.Windows.Common-Controls 到 final 的依赖程序集 所需的可执行文件 C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\python.exe 11539 警告:找不到库:api-ms-win-core-path-l1-1-0.dll 的依赖 C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\python39.dll 11570 信息:分析 C:\Users\vadim.sharoikin\Desktop\stat\stat1.py 11577 信息:分析隐藏的导入 'bottle_websocket' 11793 信息: 处理模块挂钩... 11793 信息:加载模块挂钩 'hook-difflib.py' 来自 'C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\PyInstaller\hooks'... 11793 信息:从加载模块挂钩“hook-distutils.py” 'C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\PyInstaller\hooks'... 11793 信息:从加载模块挂钩“hook-distutils.util.py” 'C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\PyInstaller\hooks'... 11793 信息:从加载模块挂钩“hook-encodings.py” 'C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\PyInstaller\hooks'... 致命的 Python 错误:init_import_site:导入站点模块失败 Python 运行时状态:已初始化 Traceback(最近一次调用最后一次): 文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site.py", 第 73 行,在 导入操作系统文件“C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\os.py”, 第 27 行,在 将 stat 导入为 st 文件“C:\Users\vadim.sharoikin\Desktop\stat\stat.py”,第 1 行,在 导入 pyodbc, datetime,time,eel, jinja2 文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\eel_init .py", 第 5 行,在 从 gevent.threading 导入计时器文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\gevent_init.py", 第 62 行,在 import socket # pylint:disable=unused-import,useless-suppression File "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\socket.py", 第 67 行,在 all.extend(os._get_exports_list(socket)) AttributeError: 部分初始化的模块 'os' 没有属性 'get_exports_list' (很可能是由于循环导入)11878 INFO:加载模块挂钩 'hook-gevent.py' 来自 'C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\PyInstaller\hooks'... 致命的 Python 错误:init_import_site:导入站点模块失败 Python 运行时状态:已初始化 Traceback(最近一次调用最后一次): 文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site.py", 第 73 行,在 导入操作系统文件“C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\os.py”, 第 27 行,在 将 stat 导入为 st 文件“C:\Users\vadim.sharoikin\Desktop\stat\stat.py”,第 1 行,在 导入 pyodbc, datetime,time,eel, jinja2 文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\eel_init .py", 第 5 行,在 从 gevent.threading 导入计时器文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\gevent_init.py", 第 62 行,在 import socket # pylint:disable=unused-import,useless-suppression File "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\socket.py", 第 67 行,在 all.extend(os._get_exports_list(socket)) AttributeError: 部分初始化的模块 'os' 没有属性 'get_exports_list' (很可能是由于循环导入)12328 INFO:确定一个 将分发包映射到包... 40832 警告:无法找到 来自包 gevent 的要求 zope.event 的包。 40832 警告: 无法从包中找到要求 zope.interface 的包 事件。 40832 信息:gevent 所需的包:['cffi','greenlet', 'setuptools'] 41936 信息:处理安全前导入模块挂钩 setuptools.extern.six.moves 从 'C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\PyInstaller\hooks\pre_safe_import_module\hook-setuptools.extern.six.moves.py'。 致命的 Python 错误:init_import_site:导入站点模块失败 Python 运行时状态:已初始化 Traceback(最近一次调用最后一次): 文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site.py", 第 73 行,在 导入操作系统文件“C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\os.py”, 第 27 行,在 将 stat 导入为 st 文件“C:\Users\vadim.sharoikin\Desktop\stat\stat.py”,第 1 行,在 导入 pyodbc, datetime,time,eel, jinja2 文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\eel_init .py", 第 5 行,在 从 gevent.threading 导入计时器文件 "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\site-packages\gevent_init.py", 第 62 行,在 import socket # pylint:disable=unused-import,useless-suppression File "C:\Users\vadim.sharoikin\AppData\Local\Programs\Python\Python39\lib\socket.py", 第 67 行,在 all.extend(os._get_exports_list(_socket)) AttributeError: 部分初始化的模块 'os' 没有属性 '_get_exports_list' (很可能是由于循环导入) pre-safe-import-module 钩子 失败,需要修复。
【问题讨论】:
可能不要使用最新的 Python,因为某些模块可能无法使用此版本。 【参考方案1】:为了包括对 html 模板的支持,目前使用 Jinja2 我认为这是你使用 web 后的问题:
pip install eel[jinja2]
【讨论】:
我是这样安装的 你试过重新安装吗? 显然当我安装新版本的python时,我并没有完全清理旧版本。一切都在虚拟机上组装,没有任何问题。以上是关于使用 pyinstaller [eel] 编译应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 PyInstaller 编译 PyQt5 Python 应用程序时遇到问题
Electron NPM 应用程序找不到 file:///eel.js,但 python 可以
使用 --onefile 和 --noconsole 使用 PyInstaller 编译的 PyQt5 应用程序,但 exe 无法启动