用Python已经有近9年了, 大多数时候都是用它来做些内部使用的小工具,写的都比较随意(唯一的正式项目经历,就是写一个用户评论搜索引擎,那个网站已经关闭了,当年的页面可在archive.org看到)。 做这些开发时,开发的方法思路其实和十来年前没啥差别,当然有了些更好的辅助工具,例如Git,Pycharm等, 但主要方法没啥大变化。 这周用Python做另一个正式项目,尝试采用了和以前都不一样的方法,通过这一个星期学习到了不少新东西。
- 用pyenv来管理python的不同版本,
因为项目用了Python 3.5, 而系统是Python 2.7 - 用了Python 3.5的Type Hints
- 用PyScaffold初始化了项目
以前也用Django来生成过web项目,但非web项目还是第一次用生成器生成。 - 用commitizen来写git commit message, 这样能够用cz-conventional-changelog自动生成change log
- 用pylint,flake8做代码检查
- 用tox做测试
- 在Git pre commit hook中加入pylint,flake8,tox检查
- 用SQLAlchemy来做ORM, 用Alembic做数据库的版本升级管理
以前都是直接写SQL -_-;,当然是参数化的。 这次先用phpMyAdmin直接在mysql上设计数据表,然后用sqlacodegen生成model代码,再用Alembic做版本管理。 - 用Travis做系统集成
- 用pip做依赖管理
- 用pip freeze > requirements.txt 来记录依赖
- 再用pip install -r requirements.txt来重建依赖环境
- 正在研究virtualenv以实现依赖的隔离
- 另:以前研究过Docker,遇到些问题没能搞定,有经验的还请指点一二
- 和Slack集成
现在已经能从Slack里看到Github的提交,Pull request提醒,并能看到Travis持续进程测试结果。上线时还要实现从聊天频道里直接下指令部署。
感觉现在开发的思想,哲学都比起20年前,甚至比起10年前都有了根本的改变,我们正迎来程序开发上的工业革命,生为这个时代的程序员是何其的幸福啊 :)。