Python老兵的新征程

用Python已经有近9年了, 大多数时候都是用它来做些内部使用的小工具,写的都比较随意(唯一的正式项目经历,就是写一个用户评论搜索引擎,那个网站已经关闭了,当年的页面可在archive.org看到)。 做这些开发时,开发的方法思路其实和十来年前没啥差别,当然有了些更好的辅助工具,例如Git,Pycharm等, 但主要方法没啥大变化。 这周用Python做另一个正式项目,尝试采用了和以前都不一样的方法,通过这一个星期学习到了不少新东西。

  1. pyenv来管理python的不同版本,
    因为项目用了Python 3.5, 而系统是Python 2.7
  2. 用了Python 3.5的Type Hints
  3. PyScaffold初始化了项目
    以前也用Django来生成过web项目,但非web项目还是第一次用生成器生成。
  4. commitizen来写git commit message, 这样能够用cz-conventional-changelog自动生成change log
  5. pylintflake8做代码检查
  6. tox做测试
  7. 在Git pre commit hook中加入pylint,flake8,tox检查
  8. SQLAlchemy来做ORM, 用Alembic做数据库的版本升级管理
    以前都是直接写SQL -_-;,当然是参数化的。 这次先用phpMyAdmin直接在mysql上设计数据表,然后用sqlacodegen生成model代码,再用Alembic做版本管理。
  9. Travis做系统集成
  10. pip做依赖管理
    1. 用pip freeze > requirements.txt 来记录依赖
    2. 再用pip install -r requirements.txt来重建依赖环境
    3. 正在研究virtualenv以实现依赖的隔离
    4. 另:以前研究过Docker,遇到些问题没能搞定,有经验的还请指点一二
  11. Slack集成
    现在已经能从Slack里看到Github的提交,Pull request提醒,并能看到Travis持续进程测试结果。上线时还要实现从聊天频道里直接下指令部署。

感觉现在开发的思想,哲学都比起20年前,甚至比起10年前都有了根本的改变,我们正迎来程序开发上的工业革命,生为这个时代的程序员是何其的幸福啊 :)。

在Windows的Apache 2.2上安装mod_python 3.2.10

想给自己的Apache服务器安装mod_python, 在mod_python主页只能看到3.2.8 for windows, 这个版本只能在Apache 2.0下工作。找了半天,在china-django.com, 找到了爱好者自己编译出来的mod_python 3.2.10 for windows。 安装的时候发现还需要一个msvcr71.dll, 原来是VC 7.1 的一个动态库,从别的机器上拷过来就好了。