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

2020-08-28 15:34:48 +08:00
 williamfzc
如题,例如我维护一个工程,生产环境是 3.5 ;
那如果有人使用了 3.6+的新特性(诸如 fstring ),那势必会导致部署失败的。有什么办法可以在 MR 的时候直接检查出来吗?

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

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

@black11black 当然从开发者的角度我们肯定是希望支持越高越好,不过上生产确实有些特殊原因受限,在运维解决好这些问题之前我们只能在我们这一侧保障质量;
BingoXuan
2020-08-29 14:15:22 +08:00
@williamfzc
因为我们公司就是习惯工程就是一个文件夹加一堆源码,每次有改动更新依赖和版本就各种问题。最好有类似前端的脚手架自动创建工程。脚手架安装好了,那么工程肯定没有问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/702229

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX