Python3.6+Django项目:PythonAnywhere中pytube无YouTube属性求助
解决pytube的AttributeError: module 'pytube' has no attribute 'YouTube'问题
这个问题我碰到过好多次,核心原因确实是包冲突或者版本不匹配,加上PythonAnywhere的多Python环境容易搞混,给你一步步解决:
第一步:彻底清理冲突的pytube包
首先,在PythonAnywhere的控制台里,用对应Python3.6的pip工具卸载所有可能重名的包——因为曾经有pytube3、pytube-ext这类分叉包,很容易和官方pytube冲突:
pip3.6 uninstall -y pytube pytube3 pytube-ext
这里用pip3.6是关键,因为PythonAnywhere里pip默认对应Python2,pip3对应默认Python3,但你的项目用的是3.6,必须指定pip3.6才能把包卸载到正确的环境里。
第二步:安装适配你代码的稳定版本
你的代码用的是pytube.YouTube这种写法,这对应pytube12.1.0版本(这个版本是API未变更前的稳定版,后续版本重构了导入方式)。安装命令:
pip3.6 install pytube==12.1.0
别用GitHub最新版,最新版的pytube已经把YouTube类改成了需要单独导入(from pytube import YouTube),直接装最新版会继续报错。
第三步:验证安装是否正确
在控制台运行Python3.6验证:
python3.6
然后输入以下代码:
import pytube print(pytube.__version__) print(hasattr(pytube, 'YouTube'))
如果输出12.1.0和True,说明安装成功了,再运行你的项目代码就不会报错了。
关于pip vs pip3的补充
在PythonAnywhere环境里:
pip→ 对应Python2.xpip3→ 对应服务器默认的Python3.x(可能不是3.6)pip3.6→ 精准对应Python3.6环境
因为你的项目用的是Python3.6,所有包操作都要用pip3.6,才能确保包安装到你的项目对应的Python环境中,不会出现装了但项目找不到的情况。
内容的提问来源于stack exchange,提问作者surftijmen
相关产品推荐
相关产品推荐

