V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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 · 2020-08-28 15:34:48 +08:00 · 2178 次点击
    这是一个创建于 1548 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,例如我维护一个工程,生产环境是 3.5 ;
    那如果有人使用了 3.6+的新特性(诸如 fstring ),那势必会导致部署失败的。有什么办法可以在 MR 的时候直接检查出来吗?

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

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

    @black11black 当然从开发者的角度我们肯定是希望支持越高越好,不过上生产确实有些特殊原因受限,在运维解决好这些问题之前我们只能在我们这一侧保障质量;
    BingoXuan
        8
    BingoXuan  
       2020-08-29 14:15:22 +08:00 via Android
    @williamfzc
    因为我们公司就是习惯工程就是一个文件夹加一堆源码,每次有改动更新依赖和版本就各种问题。最好有类似前端的脚手架自动创建工程。脚手架安装好了,那么工程肯定没有问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   960 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:05 · PVG 05:05 · LAX 13:05 · JFK 16:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.