Python开发的YouTube批量下载工具转exe后Download按钮失效求助
解决方案:PyInstaller打包pytube工具后Download按钮无响应的问题
针对你遇到的re.error: nothing to repeat at position 2错误,这是pytube处理YouTube签名时的正则表达式匹配问题,结合打包场景,可按以下步骤解决:
升级pytube到最新版本
旧版本pytube的cipher模块正则表达式无法适配YouTube最新的签名逻辑,打包后触发正则编译错误。执行命令更新:pip install --upgrade pytube更新后重新测试.py脚本,确认下载功能正常后再打包。
手动修复pytube的cipher.py正则(若升级后仍报错)
找到本地pytube安装目录下的cipher.py文件,定位到初始化方法中编译正则的代码段(对应报错的pytube\cipher.py", line 30)。通常是正则表达式中存在重复符号(如*)前置无有效匹配内容的问题,将有问题的正则调整为更严谨的写法,例如:
把类似r'\$*\w+\s*=\s*function\(\)'的正则修改为r'\$?\w+\s*=\s*function\(\)'(将*改为?,避免无内容可重复的情况)。修改后保存,重新打包。调整PyInstaller打包参数
auto-py-to-exe基于PyInstaller,需确保pytube的核心模块被正确打包:- 在auto-py-to-exe的「Advanced」选项中,添加
--hidden-import pytube.cipher到「Additional Arguments」; - 勾选「Console Window」选项,打包后运行.exe可查看实时错误输出,排查是否有其他依赖缺失;
- 若使用命令行打包,执行:
pyinstaller --onefile --hidden-import pytube.cipher DonwloadYoutube.py
- 在auto-py-to-exe的「Advanced」选项中,添加
改用文件夹模式打包
若单文件(--onefile)模式仍存在资源加载问题,切换到「One Directory」模式打包(auto-py-to-exe中选择该选项)。此模式会将所有依赖文件完整复制到输出文件夹,避免单文件打包时的路径解析问题。
内容的提问来源于stack exchange,提问作者Potato 920
相关产品推荐
相关产品推荐

