安装praw遇阻:matplotlib依赖问题及nose、tornado安装失败求助
解决安装PRAW时的Matplotlib依赖冲突问题
这明显是旧版依赖包的兼容性坑——matplotlib 1.3.1对依赖的版本要求实在太苛刻,不仅和你当前的numpy版本不匹配,连安装它要求的nose、tornado都卡壳了。下面给你几个按优先级排序的解决方案:
1. 用虚拟环境隔离依赖(最推荐)
虚拟环境能把你的Reddit机器人依赖和系统全局Python环境彻底隔开,从根源避免版本冲突,步骤超简单:
- 创建并激活虚拟环境:
# Python3.3+自带venv,直接创建 python -m venv reddit-bot-env # Windows系统激活 reddit-bot-env\Scripts\activate # Linux/macOS系统激活 source reddit-bot-env/bin/activate - 激活后先把pip更到最新版:
pip install --upgrade pip - 最后直接装PRAW就行:
虚拟环境里的依赖是全新的,pip会自动拉取兼容的最新版包,完全不会触发旧版matplotlib的问题。pip install praw
2. 升级Matplotlib到兼容当前Numpy的版本
如果不想折腾虚拟环境,可以直接把matplotlib升到支持numpy 1.8.0rc1的版本——matplotlib 1.4.x及以上都能兼容,执行命令:
pip install --upgrade matplotlib
升级完成后,再补装nose、tornado和PRAW:
pip install nose tornado praw
3. 强制安装匹配matplotlib 1.3.1的依赖版本(备选)
要是升级matplotlib行不通,就只能顺着旧版matplotlib的要求来:
- 先装符合要求的numpy版本(比如1.7.x):
pip install numpy==1.7.1 - 再装nose和tornado:
pip install nose tornado - 最后安装PRAW:
不过这种方法可能会影响你环境里其他依赖numpy的包,所以除非万不得已,还是优先用虚拟环境。pip install praw
额外小提示
如果安装nose/tornado时还是失败,大概率是pip版本太旧导致的依赖解析问题,先执行这条命令更新工具链:
pip install --upgrade pip setuptools wheel
更新完再尝试安装就顺畅多了。
内容的提问来源于stack exchange,提问作者Daan Koning




