PyInstaller打包oracledb脚本报错:No module named 'secrets'求助
解决PyInstaller打包oracledb脚本时的
secrets模块缺失问题 核心原因
secrets是Python 3.6+内置模块,但PyInstaller打包时可能未自动识别oracledb对它的依赖;同时多Python版本共存环境下,可能存在PyInstaller关联版本不匹配的情况。
解决方法
1. 显式指定打包时包含secrets模块
修改打包命令,通过--hidden-import参数强制加入缺失模块:
python3 -m PyInstaller -F --hidden-import secrets my_script.py
2. 确认PyInstaller归属Python3.6环境
多版本共存时,若PyInstaller关联的是Python2.7,会导致无法正确处理Python3.6的内置模块,需重新安装对应版本的PyInstaller:
- 卸载现有PyInstaller:
pip uninstall -y PyInstaller pip3 uninstall -y PyInstaller
- 用Python3.6的pip重新安装:
python3.6 -m pip install PyInstaller
- 使用该版本打包:
python3.6 -m PyInstaller -F --hidden-import secrets my_script.py
3. 检查oracledb版本兼容性
确保安装的oracledb版本支持Python3.6.8,可安装已知兼容版本:
python3.6 -m pip install oracledb==1.2.2
4. 通过.spec文件手动配置依赖
若上述方法无效,可生成.spec文件后手动添加依赖:
- 生成.spec文件:
python3.6 -m PyInstaller -F my_script.py
- 打开
my_script.spec,找到hiddenimports项并添加'secrets':
hiddenimports=['secrets'],
- 用.spec文件重新打包:
python3.6 -m PyInstaller my_script.spec
内容的提问来源于stack exchange,提问作者JacquesB
相关产品推荐
相关产品推荐

