PyInstaller打包exe后跨设备运行出现python310.dll冲突错误求助
PyInstaller打包exe后运行报错:python310.dll版本冲突解决方法
错误信息
Traceback (most recent call last): File "C:\Users\lenovo\AppData\Local\Temp\_MEI144842\test_suite.py", line 3, in <module> import asyncio File "C:\Users\lenovo\AppData\Local\Programs\Python\Python38\lib\asyncio\__init__.py", line 8, in <module> from .base_events import * File "C:\Users\lenovo\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 23, in <module> import socket File "C:\Users\lenovo\AppData\Local\Programs\Python\Python38\lib\socket.py", line 49, in <module> import _socket ImportError: Module use of python310.dll conflicts with this version of Python.
解决方法
使用干净的虚拟环境打包
系统多Python版本共存易导致依赖污染,用目标版本(Python3.8)创建独立虚拟环境:- 创建虚拟环境:
python3.8 -m venv py38_env(Windows下若默认Python为3.8,直接执行python -m venv py38_env) - 激活虚拟环境:Windows执行
py38_env\Scripts\activate,Linux/macOS执行source py38_env/bin/activate - 重新安装所有依赖及PyInstaller:
pip install pyinstaller 你的其他依赖包,或用pip install -r requirements.txt批量安装
- 创建虚拟环境:
清理PyInstaller缓存
旧打包缓存可能混入高版本文件,彻底清理后重新打包:- 删除生成的
build、dist文件夹 - 删除自动生成的
test_suite.spec文件 - 重新执行打包命令:
pyinstaller --onefile test_suite.py
- 删除生成的
排查环境变量
确保打包时系统PATH中仅包含Python3.8的路径,移除Python3.10的路径,避免PyInstaller调用错误版本的Python指定PyInstaller路径打包
若环境变量配置无效,直接使用Python3.8对应的PyInstaller路径执行打包:C:\Users\lenovo\AppData\Local\Programs\Python\Python38\Scripts\pyinstaller.exe --onefile test_suite.py
内容的提问来源于stack exchange,提问作者Saad Abdullah
相关产品推荐
相关产品推荐

