推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
williamfzc
V2EX  ›  Python

有办法可以自动判断我的工程最低需要什么版本的 Python 吗?

  •  
  •   williamfzc · Aug 28, 2020 · 3046 views
    This topic created in 2262 days ago, the information mentioned may be changed or developed.
    如题,例如我维护一个工程,生产环境是 3.5 ;
    那如果有人使用了 3.6+的新特性(诸如 fstring ),那势必会导致部署失败的。有什么办法可以在 MR 的时候直接检查出来吗?

    当然从开发环境跟自动化测试的角度可以解决,不过有没有静态检查的方案呢?英文关键词老是搜不准。。
    8 replies  •  2020-08-29 14:15:22 +08:00
    BingoXuan
    BingoXuan
    Aug 28, 2020
    1
    setup.py 可以限制 Python 版本
    Wincer
    Wincer
    Aug 28, 2020
    2
    flake8 等静态检查工具应该都可以,merge 之前使用 ci 跑一下 flake8 检测,如果当前 flake8 运行的 Python 版本是 3.5,代码使用了 fstring,会报 syntax error,对应的 exit code 就不等于 0 。
    fhsan
    fhsan
    Aug 28, 2020
    3
    git pre-commit-hook 提交前,用 pylintrc 之类的工具检查
    版本不对不允许提交
    ruanimal
    ruanimal
    Aug 28, 2020
    4
    用 tox 吧,让单一测试包含多个 python 版本,不在支持版本内的就会报错
    johnsona
    johnsona
    Aug 28, 2020
    5
    跑个题,3.5 不是有序字典,建议换 3.6
    答题,jenkinfile 的持续集成环节加入 pylint 检查。但如果是在 3.5 中误以为 dict 是有序字典,那检查不出
    什么叫求感谢啊,战术后仰
    black11black
    black11black
    Aug 29, 2020
    6
    兼容允许的情况应该尽量高才是,毕竟解释效率会优化啊
    williamfzc
    williamfzc
    OP
    Aug 29, 2020
    7
    @BingoXuan 也是一种办法了,不过有些工程不是一个库形态没有 setup.py ;

    @jsisjs20130824 哈哈,这个题突然跑好远。pylint+tox 是阔以;

    @black11black 当然从开发者的角度我们肯定是希望支持越高越好,不过上生产确实有些特殊原因受限,在运维解决好这些问题之前我们只能在我们这一侧保障质量;
    BingoXuan
    BingoXuan
    Aug 29, 2020 via Android
    8
    @williamfzc
    因为我们公司就是习惯工程就是一个文件夹加一堆源码,每次有改动更新依赖和版本就各种问题。最好有类似前端的脚手架自动创建工程。脚手架安装好了,那么工程肯定没有问题。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1712 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 116ms · UTC 14:50 · PVG 22:50 · LAX 06:50 · JFK 09:50
    ♥ Do have faith in what you're doing.