django-ftp-deploy安装升级遇依赖冲突,求解决方法
解决django-ftp-deploy与requests的certifi版本冲突问题
这个依赖冲突确实挺头疼的——一边是django-ftp-deploy 2.0.0死死要求certifi==0.0.8,另一边requests 2.18.4又必须要certifi>=2017.4.17,完全拧巴上了。给你几个递进的解决方案,从最稳妥到应急的都有:
方案1:优先升级django-ftp-deploy到最新版本
大概率是旧版本的django-ftp-deploy依赖限制太死板,新版本已经放宽了certifi的版本要求。因为apt源里的包通常更新不及时,建议直接用pip卸载旧版再装最新版:
- 先卸载apt安装的django-ftp-deploy:
sudo apt-get remove django-ftp-deploy - 用pip安装最新版:
pip install --upgrade django-ftp-deploy
新版本应该会自动适配兼容的certifi和requests版本,从根源解决冲突。
方案2:降级requests到兼容旧certifi的版本
如果你必须使用django-ftp-deploy 2.0.0,那只能找一个和certifi==0.0.8兼容的requests旧版本。比如requests 2.12.5及更早的版本,对certifi的要求没那么苛刻:
- 先卸载当前的requests:
pip uninstall requests - 安装兼容的旧版本:
pip install requests==2.12.5 - 再安装django-ftp-deploy 2.0.0:
pip install django-ftp-deploy==2.0.0
不过这种方法可能会影响其他依赖requests的项目,所以更推荐下面的虚拟环境方案。
方案3:用虚拟环境隔离项目依赖(最推荐)
虚拟环境可以让每个项目拥有独立的依赖环境,完全不会干扰系统全局的包配置:
- 创建虚拟环境(这里以Python3为例):
python -m venv my_django_project_env - 激活虚拟环境:
- Linux/macOS:
source my_django_project_env/bin/activate - Windows(PowerShell):
.\my_django_project_env\Scripts\Activate.ps1
- Linux/macOS:
- 激活后,直接安装django-ftp-deploy:
pip install django-ftp-deploy
虚拟环境会自动处理依赖兼容问题,哪怕是装旧版本2.0.0,也只会在这个环境里用对应的requests和certifi版本,不会影响其他项目。
方案4:手动修改django-ftp-deploy的依赖限制(应急用)
如果以上方法都不行,可以尝试修改django-ftp-deploy的依赖配置,放宽certifi的版本要求(不推荐长期用,因为原作者指定版本可能有原因):
- 先下载django-ftp-deploy 2.0.0的源码包:
pip download django-ftp-deploy==2.0.0 - 解压下载的tar.gz/zip包,找到
setup.py文件,把里面的certifi==0.0.8改成certifi>=0.0.8 - 进入解压后的目录,重新安装修改后的版本:
pip install .
安装后记得测试django-ftp-deploy的功能是否正常,避免出现隐性问题。
内容的提问来源于stack exchange,提问作者Mike75
相关产品推荐
相关产品推荐

