值得看的Python的開源項目有哪些?

好的開源項目對大家學習會有很大幫助,希望大家推薦下適合Python學習的好的開源項目,盡量本身不是太龐大,而且結構清晰


個人推薦看 Kenneth Reitz 大神的成名之作 Requests,感受一下什麼是真正的Pythonic代碼,什麼是 Keep It Simple and Stupid

有網友已經整理了一份Requests源碼閱讀清單,內容幽默詼諧有趣,推薦看一看

  • Requests v0.2.0 Birth! 2016-03-14
  • Requests v0.3.0 Be frinendly 2016-03-16
  • Requests v0.4.0 Amazing tour 2016-03-17
  • Requests v0.5.0 Context Manager 2016-03-18
  • Reuqests v0.6.0 Captain Hook! 2016-03-19
  • Reuqests v0.7.0 awesome gevent 2016-03-22
  • Reuqests v0.8.0 2016-03-??

還有老外分享的一個PPT,手把手教你如何閱讀源碼,也是拿Requests作為參考例子 https://www.slideshare.net/onceuponatimeforever/lets-read-code ,沒有梯子的在這裡下載 https://pan.baidu.com/s/1i5ggKjr

下面是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, amp;amp;amp;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之美」):

http://weixin.qq.com/r/D0zH35LE_s_Frda89xkd (二維碼自動識別)


謝邀,已經有很多優秀的答案了,在才補充幾個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 - 碼雲

碼雲 http://Gitee.com

發現更多優質開源項目:最新推薦 - 碼雲 - 開源中國

團隊流暢、高效開發:碼雲企業版 - 碼雲 - 開源中國


flask; requests (Python HTTP Requests for Humans)

看看requests吧, github上排名很高。


django,建議看一下,我覺得整個框架寫得非常的清楚。


tornado, 代碼很簡潔, 從低層的IO到模板處理都有, 有興趣參考: 閱讀Tornado v 1.0.0筆記.


Kenneth Reitz的作品值得一看。他就是requests的作者。

kennethreitz (Kenneth Reitz) · GitHub

Kenneth Reitz


Tornado,不只是web/框架/server怎麼實現,還有底層的非同步/非阻塞/eventloop/epoll等等相關的概念,非常值得深入理解


看前面的推薦大多數是成熟的框架,我是菜鳥感覺看起來吃力。推薦一個很棒很實用的項目吧you-get,功能強大從百度到優酷土豆愛奇藝啥的視頻都能下載。不過要手動輸入視頻網址才能下載。曾經把優酷的用Qt翻譯了下,不過弄丟了,後來懶蛋也沒做下去,有時間繼續。

其實你想深挖掘的話可以下個爬蟲實現抓取視頻就是一個免費無廣告的播放器啊,我就自己寫了一個音樂播放器,那種自己寫出來聽的成就感是一般人無法體會到的


http://odoo.com

開源erp 也是裝機最多的erp

http://openstack.org

開源雲os

azure aws joyent gce之外的用的雲os多是這個


Olivier Grisel在github上的repos

ogrisel (Olivier Grisel) · GitHub


Reading Great Code

Reading Great Code

One of the core tenants behind the design of Python is creating readable code. The motivation behind this design is simple: The number one thing that Python programmers do is read code.

One of the secrets of becoming a great Python programmer is to read, understand, and comprehend excellent code.

Excellent code typically follows the guidelines outlined in Code Style, and does its best to express a clear and concise intent to the reader.

Included below is a list of recommended Python projects for reading. Each one of these projects is a paragon of Python coding.

  • 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.

我自己的感覺. 很多..

當你用某個第三方庫的時候. 遇到bug並且能夠確定你的代碼邏輯上沒問題之後. 你就會去看哪個第三方庫的源碼了...


你要的都在這裡了,還需要來逼乎來問嗎?一張圖搞定的事情,非要裝逼拉都拉不住!寫的多就是好嗎?把項目fork到自己的賬號,down之,提issues ,完善自己的branch,解決issues提交到github,讓他們膜拜你的code , 就這麼玩!


先把標準庫讀一遍?


sqlmap,pcap,dpkt,urllib2


相對於其他編程語言,Python語言的核心是驚人的簡單易學。實際上,你可以在幾天內(如果你是有經驗的程序員,或許只需要幾個小時)寫出不錯的Python代碼。

一、Taiga是一個免費開源,而且功能非常強大的項目管理平台,用於初創企業和敏捷開發團隊。提供一個簡單、漂亮的項目管理工具。它採用 Python Django 框架開發,前端基於 AngularJS 實現。

下載地址:https://github.com/taigaio/taiga-back

二、Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司開發的一種數據描述語言,類似於XML能夠將結構化數據序列化,可用於數據存儲、通信協議等方面。現階段支持C++、JAVA、Python等三種編程語言。

下載地址:https://github.com/google/protobuf

三、Open Chinese Convert(OpenCC)是一個開源的中文簡繁轉換項目,致力於製作高質量的基於統計預料的簡繁轉換詞庫。還提供函數庫、命令行簡繁轉換工具、人工校對工具、詞典生成程序、在線轉換服務及圖形用戶界面。

下載地址:https://bintray.com/byvoid/opencc/OpenCC

就利用這些Python項目,好好研究研究,希望對你有幫助!


BitTorrent 網路編程 經典


學習了,正在看requests


推薦閱讀:

GitHub 上有哪些值得關注和學習的經典 Android 項目?
哪個開源的SNS最方便二次開發:UChome 還是 iWebSNS。還有更好選擇嗎?

TAG:開源項目 | Python框架 |