pip freeze是魔鬼

很多用Python的项目,喜欢用 pip freeze > requirements.txt 来保存依赖,而不是手动维护文件,pip freeze 是魔鬼。

来看看一个项目依赖的简化版:

        A           B
    /      \     /      \
C             D             E

可以看到,依赖中可能会出现共同依赖。为啥说 pip freeze 是魔鬼呢?

  • 可能会列入无关紧要的,或者非项目所需的依赖
  • 把次级依赖的版本也写死了,当后来需要升级顶级依赖的时候,很难分辨需要升级哪些,因此不可维护

那么我建议的写法是什么样的呢?仅写入顶级依赖,比如:

flask==1.1.1
PyMySQL==0.9.3
SQLAlchemy==1.3.13
alembic==1.4.0
gevent==1.4.0
gunicorn==20.0.4
redis==3.4.1

这样虽然时间久了,次级依赖可能也会冲突,但是解决起来比上面说的要简单很多。


更多文章
  • Nginx 请求匹配规则
  • Web开发系列(六):关系型数据库,ORM
  • Web开发系列(七):缓存,CDN
  • Web开发系列(八):单点故障,负载均衡
  • Web开发系列(五):form, json, xml
  • Web开发系列(四):Flask, Tornado和WSGI
  • Web开发系列(三):什么是HTML,CSS,JS?
  • Web开发系列(二):HTTP协议
  • Web开发系列(一):从输入网址到最后,这个过程经历了什么?
  • SNI: 让Nginx在一个IP上使用多个证书
  • Haskell: infixl, infixr, infix
  • Haskell简明教程(五):处理JSON
  • Haskell简明教程(四):Monoid, Applicative, Monad
  • HTTPS 的详细流程
  • OAuth2 为什么需要 Authorization Code?