代码改变世界

[转载]值得看的Python的开源项目有哪些?

2018-01-15 23:52  逍楚客  阅读(439)  评论(0)    收藏  举报

原文链接:https://www.zhihu.com/question/19840137

个人推荐看 Kenneth Reitz 大神的成名之作 Requests,感受一下什么是真正的Pythonic代码,什么是 Keep It Simple and Stupid

有网友已经整理了一份Requests源码阅读清单,内容幽默诙谐有趣,推荐看一看

還有老外分享的一個PPT,手把手教你如何阅读源码,也是拿Requests作为参考例子 ,没有梯子的在这里下载

下面是Kenneth Reitz大神自己推薦的源碼閱讀清單,來源:Reading Great Code

  • Howdoi Howdoi is a code search tool, written in Python
  • Flask Flask is a microframework for Python based on Werkzeug and Jinja2. It’s intended for getting started very quickly and was developed with best intentions in mind.
  • Diamond Diamond is a python daemon that collects metrics and publishes them to Graphite or other backends. It is capable of collecting cpu, memory, network, i/o, load and disk metrics. Additionally, it features an API for implementing custom collectors for gathering metrics from almost any source.
  • Werkzeug Werkzeug started as simple collection of various utilities for WSGI applications and has become one of the most advanced WSGI utility modules. It includes a powerful debugger, full-featured request and response objects, HTTP utilities to handle entity tags, cache control headers, HTTP dates, cookie handling, file uploads, a powerful URL routing system and a bunch of community-contributed addon modules.
  • Requests Requests is an Apache2 Licensed HTTP library, written in Python, for human beings.
  • Tablib Tablib is a format-agnostic tabular dataset library, written in Python.

 

Pocoo 家出的都是精品,比如 Flask, Werkzeug, Jinja 2 , Pygments, Sphinx 。Flask 号称微框架,0.1的代码才700来行(其中大部分都是注释) 而且代码写得很规范,非常适合学习。

Django为了做到功能完备代码必然庞大而复杂不建议单纯的阅读。
 

推荐阅读我的专栏文章:教你阅读Python开源项目代码 - Python之美 - 知乎专栏。 我摘录一部分:


我个人的喜好

和工作中看别人代码差不多,基本每个人、每个项目、每个团队都有自己写代码的风格,比如变量命名风格、某些语言特性使用方式、代码规范要求、目录风格等,其实开源项目的作者也是一样。看代码,如看人(团队)。 首先介绍下我的喜好(排名分先后):

1. kennethreitz。requests和python-guide作者。他还有一个非常励志的故事,有兴趣的可以看 谁说程序员不是潜力股?

2. mitsuhiko。flask、Jinja2、werkzeug和flask-sqlalchemy作者。

3. sigmavirus24。flake8、pycodestyle(原pep8)、requests、urllib3等项目的主要贡献者和维护者。

4. ask。Celery及相关依赖的作者。

5. ajdavis。mongo-python-driver(pymongo)、tornado等项目的主要贡献者。

6. bitprophet。fabric、paramiko(Python的ssh库)作者。

前2个是公认的Python领域代码写的最好的、最有创意的工程师。

初学者推荐阅读项目

初学者可以先阅读一些代码量比较少的,最好是单文件的项目:

1. GitHub - kennethreitz/pip-pop: Tools for managing requirements files.

2. GitHub - kennethreitz/envoy: Python Subprocesses for Humans™.

3. GitHub - kennethreitz/records: SQL for Humans™

4. GitHub - mitsuhiko/pluginbase: A simple but flexible plugin system for Python.

5. GitHub - mitsuhiko/pipsi: pip script installer

6. GitHub - mitsuhiko/unp: Unpacks things.

7. GitHub - chrisallenlane/cheat

8. GitHub - jek/blinker: A fast Python in-process signal/event dispatching system.

9. GitHub - mitsuhiko/platter: A useful helper for wheel deployments.

10. GitHub - kennethreitz/tablib: Python Module for Tabular Datasets in XLS, CSV, JSON, YAML, &c.

看代码主要是了解别人写代码的方式,语法实践这些内容。看完之后,你可以针对这些项目能解决的问题自己写个项目,写完之后和上述项目去对比一下,看看哪些方面做的不好。

进阶阅读项目

进阶的时候就要阅读一些相对复杂的项目,它们能帮助你提升Python编程技巧:

1. faif/python-patterns。使用Python实现一些设计模式的例子。

2. pallets/werkzeug。flask的WSGI工具集。其中包含了实现非常好的LocalProxy、cached_property、import_string、find_modules、TypeConversionDict等。

3. bottlepy/bottle。阅读一个Web框架对Web开发就会有更深刻的理解,flask太大,bottle就4k多行,当然如果你有毅力和兴趣直接看flask是最好了的。

4. msiemens/tinydb。了解用Python实现数据库。

5. coleifer/peewee。了解ORM的实现。

6. pallets/click。click已经内置于在flask 0.11里,提供命令行功能,值得阅读。

7. mitsuhiko/flask-sqlalchemy。了解一个flask插件是怎么实现的。

除此之外Web开发者可以阅读一些相关的项目:

1. runscope/httpbin。使用flask,网站是httpbin(1): HTTP Client Testing Service

2. jahaja/psdash。使用flask和psutils的获取Linux系统信息的面板应用。

3. pallets/flask-website。 flask官方网站应用。

4. pypa/warehouse。如果你使用pyramid,这个新版的PYPI网站,可以帮助你理解很多。

当然,2个学习flask重要的资源必须爆一爆:

1. GitHub - realpython/discover-flask: Full Stack Web Development with Flask

2. The Flask Mega-Tutorial。 这个就是《Flask Web开发:基于Python的Web应用开发实战》的原始博客。

500lines

推荐一个非常厉害的项目 GitHub - aosabook/500lines: 500 Lines or Less, 它里面包含了22个由该领域的专家完成,用不到500行的代码实现一个特定功能的子项目。连Guido van Rossum都亲自来写基于asyncio爬虫了,Nick Coghlan、ajdavis也出场了。更具体的介绍可以看Python 的练手项目有哪些值得推荐? - 小小搬运工的回答

欢迎关注本人的微信公众号获取更多Python相关的内容(也可以直接搜索「Python之美」):

(二维码自动识别)

 

 

谢邀,已经有很多优秀的答案了,在才补充几个Python开源项目作为补充,供大家交流学习。

Ps:答案显示违规了,应该是那个爬虫网站的问题,敏感词,特删除重发。

 

1. 项目名称: Openerp-China

项目简介:OpenERP中国版,降低OpenERP中国社区项目的参与门槛。

参与开发

  • 在openerp-china项目上点击fork按钮,形成你自己的项目;
  • clone你自己的项目到本地;
  • 添加 osbzr 的 remote 只需要做一次 git remote add osbzr;
  • 拉主干代码到本地 git fetch osbzr;
  • 合并 主干代码到本地 git merge osbzr/master;
  • 推送本地合并后的代码到 fork 项目 git push origin master;
  • 向主项目提交合并请求。

项目地址:开阖软件 Jeff Wang/openerp-china - 码云

 

2. 项目名称:CheungSSH

项目简介:Linux自动化运维堡垒机 国产中文系统。

项目地址:张其川/CheungSSH - 码云

 

3. 项目名称:Lepus

项目简介:简洁、直观、强大的开源企业级数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式监控,让数据库监控更简单。支持邮件告警、短信告警、AWR性能报告、慢查询分析等专业功能。

项目地址:灰太狼。/Lepus - 码云

 

4. 项目名称:Quicklib

项目简介:期货、A股等国内程序化python交易框架和工具.

项目地址:量化林/Quicklib - 码云

 

5. 项目名称:RQAlpha

项目简介:

  • 从数据获取、算法交易、回测引擎,实盘模拟,实盘交易到数据分析,为程序化交易者提供了全套解决方案。
  • 灵活的配置方式,强大的扩展性,用户可以非常容易地定制专属于自己的程序化交易系统。
  • 所有的策略都可以直接在 Ricequant 上进行回测和实盘模拟,并且可以通过微信和邮件实时推送您的交易信号。
  • 一个开放的量化算法交易社区,为程序化交易者提供免费的回测和实盘模拟环境,并且会不间断举行实盘资金投入的量化比赛。

特点:

  • 易于使用,让您集中于策略的开发,一行简单的命令就可以执行您的策略;
  • 完善的文档,您可以直接访问 RQAlpha 文档 或者 Ricequant 文档 来获取您需要的信息。
  • 活跃的社区,您可以通过访问 Ricequant 社区 获取和询问有关 RQAlpha 的一切问题,有很多优秀的童鞋会解答您的问题。
  • 稳定的环境,每天都有会大量的算法交易在 Ricequant 上运行,无论是 RQAlpha,还是数据,我们能会做到问题秒处理,秒解决。
  • 灵活的配置,您可以使用多种方式来配置和运行策略,只需简单的配置就可以构建适合自己的交易系统;
  • 强大的扩展性,开发者可以基于我们提供的 Mod Hook 接口来进行扩展。

项目地址:Ricequant/RQAlpha - 码云