Python3.10打包exe遇ModuleNotFoundError: No module named 'aiohttp'求助
解决打包Python3.10代码为.exe时的ModuleNotFoundError: No module named 'aiohttp'问题
以下是几种针对性的解决方案,按优先级尝试:
确保在虚拟环境内执行打包操作
激活你的项目虚拟环境,先在环境内安装PyInstaller(避免用全局环境的PyInstaller导致找不到虚拟包):# Windows venv\Scripts\activate # macOS/Linux source venv/bin/activate pip install pyinstaller之后再执行打包命令,确保打包工具能读取到虚拟环境里的aiohttp。
用--hidden-import强制指定导入模块
PyInstaller可能无法自动检测到aiohttp这类包含动态导入的库,打包时显式声明:pyinstaller --onefile --hidden-import aiohttp your_main_script.py如果仍有问题,可以尝试添加aiohttp的子模块(比如
--hidden-import aiohttp.web),根据报错信息调整。清理PyInstaller缓存后重新打包
删除打包生成的build、dist目录和.spec文件,这些缓存文件可能残留旧的依赖信息,删除后重新执行打包命令。通过.spec文件手动配置依赖
先生成.spec文件:pyinstaller your_main_script.py打开生成的
.spec文件,找到hiddenimports参数,添加'aiohttp':a = Analysis( ['your_main_script.py'], pathex=[], binaries=[], datas=[], hiddenimports=['aiohttp'], # 这里添加 hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False, )再用.spec文件重新打包:
pyinstaller your_main_script.spec重新确认虚拟环境内的包安装
激活虚拟环境后运行pip list,确认aiohttp 3.8.1确实在已安装包列表中。如果缺失,重新安装:pip install aiohttp==3.8.1
内容的提问来源于stack exchange,提问作者Vinicius
相关产品推荐
相关产品推荐

