Pyinstaller打包YouTube下载器时出现No module named pytube错误如何解决?

报错原因
PyInstaller打包时默认仅扫描代码中显式导入的依赖,当存在动态导入pytube、打包环境和代码运行环境不一致的情况时,pytube模块不会被自动打包进可执行文件,运行时就会触发该报错。
修复方案
- 方案1:打包时显式声明隐藏导入
运行PyInstaller命令时添加--hidden-import pytube参数即可,示例命令如下:
如果你开发的是GUI程序,可以额外添加pyinstaller --onefile --hidden-import pytube 你的脚本文件名.py--windowed参数隐藏控制台窗口。如果后续运行还提示pytube子模块缺失,可以将参数改为--hidden-import pytube --hidden-import pytube.*。 - 方案2:对齐Python运行和打包环境
先执行pip list确认当前环境已安装pytube,若未安装先执行pip install pytube。
如果你使用了虚拟环境,需确保你调用的PyInstaller是当前虚拟环境内安装的版本,不要调用全局环境的PyInstaller,避免跨环境依赖缺失。 - 方案3:通过spec文件配置导入
如果你已经生成过打包对应的.spec文件,可以直接编辑该文件,在hiddenimports数组中添加'pytube':
编辑完成后直接用spec文件重新打包即可:a = Analysis( ['你的脚本文件名.py'], pathex=[], binaries=[], datas=[], hiddenimports=['pytube'], # 此处添加pytube依赖 hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], cipher=block_cipher, noarchive=False )pyinstaller 你的脚本文件名.spec
内容的提问来源于stack exchange,提问作者ronron681
相关产品推荐
相关产品推荐

