15个最受欢迎的Python开源框架(转载)
一、Django: Python Web應(yīng)用開(kāi)發(fā)框架
?
Django是一個(gè)開(kāi)放源代碼的Web應(yīng)用框架,由Python寫(xiě)成。采用了MVC的軟件設(shè)計(jì)模式,即模型M,視圖V和控制器C。它最初是被開(kāi)發(fā)來(lái)用于管理勞倫斯出版集團(tuán)旗下的一些以新聞內(nèi)容為主的網(wǎng)站的,
即是CMS(內(nèi)容管理系統(tǒng))軟件。并于2005年7月在BSD許可證下發(fā)布。這套框架是以比利時(shí)的吉普賽爵士吉他手Django Reinhardt來(lái)命名的。
? ? ? ? ? ?Django 應(yīng)該是最出名的Python框架,GAE甚至Erlang都有框架受它影響。Django是走大而全的方向,它最出名的是其全自動(dòng)化的管理后臺(tái):只需要使用起ORM,做簡(jiǎn)單的對(duì)象定義,它就能自動(dòng)生成數(shù)據(jù)庫(kù)結(jié)構(gòu)、以及全功能的管理后臺(tái)。
? ? ? ? ? ?Django提供的方便,也意味著Django內(nèi)置的ORM跟框架內(nèi)的其他模塊耦合程度高。應(yīng)用程序必須使用Django內(nèi)置的ORM,否則就不能享受到框架內(nèi)提供的種種基于其ORM的便利;理論上可以切換掉其ORM模塊,
但這就相當(dāng)于要把裝修完畢的房子拆除重新裝修,倒不如一開(kāi)始就去毛胚房做全新的裝修。Django的賣(mài)點(diǎn)是超高的開(kāi)發(fā)效率,其性能擴(kuò)展有限;采用Django的項(xiàng)目,在流量達(dá)到一定規(guī)模后,都需要對(duì)其進(jìn)行重構(gòu),才能滿足性能的要求。
?
二、Diesel:基于Greenlet的事件I/O框架
?
Diesel提供一個(gè)整潔的API來(lái)編寫(xiě)網(wǎng)絡(luò)客戶端和服務(wù)器。支持TCP和UDP。
你應(yīng)該使用diesel來(lái)編寫(xiě)你的下一個(gè)網(wǎng)絡(luò)應(yīng)用。得益于Python使得diesel語(yǔ)法非常整潔,發(fā)展步伐非常迅速。非阻塞I/O使得diesel非常快速并且容易擴(kuò)展。greenlets使得diesel有了unwind(to(callbacks(no)))。
nose使得測(cè)試變得容易。最后,Flask使得你不需要寫(xiě)一個(gè)新的網(wǎng)絡(luò)框架來(lái)使用diesel。
示例
? ? ? ? ? ? ? ? ? ? ? ? ? ?需要框架項(xiàng)目實(shí)戰(zhàn)視頻 ?+ ?Python學(xué)習(xí)交流 ??643692991 ??
?
三、Flask:一個(gè)用Python編寫(xiě)的輕量級(jí)Web應(yīng)用框架
?
Flask是一個(gè)使用Python編寫(xiě)的輕量級(jí)Web應(yīng)用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎。 Flask使用BSD授權(quán)。 Flask也被稱為“microframework”,因?yàn)樗褂煤?jiǎn)單的核心,用extension增加其他功能。
Flask沒(méi)有默認(rèn)使用的數(shù)據(jù)庫(kù)、窗體驗(yàn)證工具。然而,Flask保留了擴(kuò)增的彈性,可以用Flask-extension加入這些功能:ORM、窗體驗(yàn)證工具、文件上傳、各種開(kāi)放式身份驗(yàn)證技術(shù)。
Flask 很有趣
?
配置簡(jiǎn)單
特性
1、內(nèi)置開(kāi)發(fā)用服務(wù)器和debugger
2、集成單元測(cè)試(unit testing)
3、RESTful request dispatching
4、使用Jinja2模板引擎
5、支持secure cookies(client side sessions)
6、100% WSGI 1.0兼容
7、Unicode based
8、詳細(xì)的文件、教學(xué)
9、Google App Engine兼容
10、可用Extensions增加其他功能
?
四、Cubes:輕量級(jí)Python OLAP框架
Cubes是一個(gè)輕量級(jí)Python框架,包含OLAP、多維數(shù)據(jù)分析和瀏覽聚合數(shù)據(jù)(aggregated data)等工具
Cubes的主要特性之一是它的邏輯模型,抽象物理數(shù)據(jù)并提供給終端用戶層。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 需要框架項(xiàng)目實(shí)戰(zhàn)視頻 ?+ ?Python學(xué)習(xí)交流 ??643692991 ?
?
五、Kartograph.py:創(chuàng)造矢量地圖的輕量級(jí)Python框架
?
Kartograph是一個(gè)Python庫(kù),用來(lái)為ESRI生成SVG地圖。Kartograph.py目前仍處于beta階段,你可以在virtualenv環(huán)境下來(lái)測(cè)試。
?
?
六、Pulsar:Python的事件驅(qū)動(dòng)并發(fā)框架
?
Pulsar是一個(gè)事件驅(qū)動(dòng)的并發(fā)框架,有了pulsar,你可以寫(xiě)出在不同進(jìn)程或線程中運(yùn)行一個(gè)或多個(gè)活動(dòng)的異步服務(wù)器。
應(yīng)用
附帶以下功能
1、Socket服務(wù)器
2、WSGI服務(wù)器
3、JSON-RPC
4、Web Sockets
5、任務(wù)隊(duì)列
6、Shell
7、測(cè)試包
8、django集成
示例
對(duì)所有請(qǐng)求都返回“Hello World!”作為響應(yīng)
?
? ? ? ? ? ? ? ? ? ? ? ?需要框架項(xiàng)目實(shí)戰(zhàn)視頻 ?+ ?Python學(xué)習(xí)交流 ??643692991 ?
七、Web2py:全棧式Web框架
?
Web2py是一個(gè)為Python語(yǔ)言提供的全功能Web應(yīng)用框架,旨在敏捷快速的開(kāi)發(fā)Web應(yīng)用,具有快速、安全以及可移植的數(shù)據(jù)庫(kù)驅(qū)動(dòng)的應(yīng)用,兼容Google App Engine。
Web2py目錄結(jié)構(gòu)
?
?
?
八、Falcon:構(gòu)建云API和網(wǎng)絡(luò)應(yīng)用后端的高性能Python框架
? ? ? ?
Falcon是一個(gè)構(gòu)建云API的高性能Python框架,它鼓勵(lì)使用REST架構(gòu)風(fēng)格,盡可能以最少的力氣做最多的事情。
特性
1、通過(guò)URI模板和資源類(lèi)的路由
2、通過(guò)請(qǐng)求和響應(yīng)類(lèi)訪問(wèn)headers和bodies
3、通過(guò)異常基類(lèi)響應(yīng)HTTP錯(cuò)誤等等
基準(zhǔn)測(cè)試
?
? ? ? ? ? ? ? ? ? ? ? ? ? ?需要框架項(xiàng)目實(shí)戰(zhàn)視頻 ?+ ?Python學(xué)習(xí)交流 ??643692991 ?
?
九、Dpark:Python版的Spark
?
DPark是一個(gè)基于Mesos的集群計(jì)算框架(cluster computing framework),是Spark的Python實(shí)現(xiàn)版本,類(lèi)似于MapReduce,但是比其更靈活,可以用Python非常方便地進(jìn)行分布式計(jì)算,并且提供了更多的功能以便更好
的進(jìn)行迭代式計(jì)算。DPark的計(jì)算模型是基于兩個(gè)中心思想的:對(duì)分布式數(shù)據(jù)集的并行計(jì)算以及一些有限的可以在計(jì)算過(guò)程中、從不同機(jī)器訪問(wèn)的共享變量類(lèi)型。這個(gè)的目標(biāo)是為了提供一種類(lèi)似于global address space
programming model的工具,例如OpenMP,但是我們要求共享變量的類(lèi)型必須是那些很容易在分布式系統(tǒng)當(dāng)中實(shí)現(xiàn)的,當(dāng)前支持的共享變量類(lèi)型有只讀的數(shù)據(jù)和支持一種數(shù)據(jù)修改方式的累加器(accumulators)。
DPark具有的一個(gè)很重要的特性:分布式的數(shù)據(jù)集可以在多個(gè)不同的并行循環(huán)當(dāng)中被重復(fù)利用。這個(gè)特性將其與其他數(shù)據(jù)流形式的框架例如Hadoop和Dryad區(qū)分開(kāi)來(lái)。
示例
一個(gè)word counting程序
?
上面的腳本可以無(wú)修改的在Mesos集群上運(yùn)行,只需稍微修改一下命令行參數(shù):
十、Buildbot:基于Python的持續(xù)集成測(cè)試框架
?
Buildbot是一個(gè)開(kāi)源框架,可以自動(dòng)化軟件構(gòu)建、測(cè)試和發(fā)布等過(guò)程。每當(dāng)代碼有改變,服務(wù)器要求不同平臺(tái)上的客戶端立即進(jìn)行代碼構(gòu)建和測(cè)試,收集并報(bào)告不同平臺(tái)的構(gòu)建和測(cè)試結(jié)果。
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? 需要框架項(xiàng)目實(shí)戰(zhàn)視頻 ?+ ?Python學(xué)習(xí)交流 ??643692991 ?
?
十一、Zerorpc:基于ZeroMQ的高性能分布式RPC框架
?
Zerorpc是一個(gè)基于ZeroMQ和MessagePack開(kāi)發(fā)的遠(yuǎn)程過(guò)程調(diào)用協(xié)議(RPC)實(shí)現(xiàn)。和?Zerorpc 一起使用的 Service API 被稱為?zeroservice。Zerorpc 可以通過(guò)編程或命令行方式調(diào)用。
它允許你:
1、不用修改代碼即可顯露python模塊
2、通過(guò)命令行遠(yuǎn)程調(diào)用這些模塊
如何把你代碼中的對(duì)象暴露為一個(gè)zeroservice?
?
運(yùn)行以上代碼,在另一個(gè)終端,嘗試連接這個(gè)zeroservice
?
十二、Bottle: 微型Python Web框架
?
Bottle是一個(gè)簡(jiǎn)單高效的遵循WSGI的微型python Web框架。說(shuō)微型,是因?yàn)樗挥幸粋€(gè)文件,除Python標(biāo)準(zhǔn)庫(kù)外,它不依賴于任何第三方模塊。
特性
1、Routing:把請(qǐng)求映射到函數(shù),建立簡(jiǎn)潔動(dòng)態(tài)的URLs
2、Templates:采用內(nèi)置模板引擎,同時(shí)還支持 mako, jinja2, cheetah 等第三方模板
3、Utilities:便捷地讀取表單數(shù)據(jù)、上傳文件、 cookies、HTTP頭信息和其它 HTTP相關(guān)的元數(shù)據(jù)
4、Server:內(nèi)置HTTP開(kāi)發(fā)服務(wù)器,并且支持 paste, fapws3, bjoern, Google App Engine, Cherrypy 或者其它任何WSGI HTTP 服務(wù)器
?
示例
運(yùn)行上面的代碼,訪問(wèn)http://localhost:8080/hello/bottle試試。
下載和安裝
通過(guò)
或者
安裝最新穩(wěn)定版,或者下載bottle.py (不穩(wěn)定)到你的工程目錄。Bottle運(yùn)行于Python 2.5+ and 3.x環(huán)境下。
? ? ? ? ? ? ? 需要框架項(xiàng)目實(shí)戰(zhàn)視頻 ?+ ?Python學(xué)習(xí)交流 ??643692991 ?
?
十三、Tornado:異步非阻塞IO的Python Web框架
?
Tornado的全稱是Torado Web Server,從名字上看就可知道它可以用作Web服務(wù)器,但同時(shí)它也是一個(gè)Python Web的開(kāi)發(fā)框架。最初是在FriendFeed公司的網(wǎng)站上使用,FaceBook收購(gòu)了之后便開(kāi)源了出來(lái)。
作為Web框架,是一個(gè)輕量級(jí)的Web框架,類(lèi)似于另一個(gè)Python web 框架Web.py,其擁有異步非阻塞IO的處理方式。
作為Web服務(wù)器,Tornado有較為出色的抗負(fù)載能力,官方用nginx反向代理的方式部署Tornado和其它Python web應(yīng)用框架進(jìn)行對(duì)比,結(jié)果最大瀏覽量超過(guò)第二名近40%。
此外,它的源代碼也是Python開(kāi)發(fā)者學(xué)習(xí)與研究的絕佳材料。
以下是Tornado的Hello World示例程序。
?
?
十四、webpy: 輕量級(jí)的Python Web框架
?
webpy的設(shè)計(jì)理念力求精簡(jiǎn)(Keep it simple and powerful),源碼很簡(jiǎn)短,只提供一個(gè)框架所必須的東西,不依賴大量的第三方模塊,它沒(méi)有URL路由、沒(méi)有模板也沒(méi)有數(shù)據(jù)庫(kù)的訪問(wèn)。這樣的優(yōu)點(diǎn)是,
框架給開(kāi)發(fā)帶來(lái)的限制少,可以根據(jù)自己的需求進(jìn)行定制。缺點(diǎn)就是,很多東西都需要自己親自動(dòng)手開(kāi)發(fā)。
? ? ? ? ? ? ?雖然webpy的作者Aaron H.Swartz,一位偉大的程序員在2013年1月11日自殺身亡,結(jié)束了短暫的26年生命。但是,作為一個(gè)開(kāi)源項(xiàng)目,目前還是有很多開(kāi)發(fā)者在持續(xù)更新。
webpy非常的簡(jiǎn)單,語(yǔ)法幾乎跟Python一樣,以下是一個(gè)簡(jiǎn)單的示例:
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 需要框架項(xiàng)目實(shí)戰(zhàn)視頻 ?+ ?Python學(xué)習(xí)交流 ??643692991 ?
?
十五、Scrapy:Python的爬蟲(chóng)框架
?
? ? ? ? ? ? ?網(wǎng)絡(luò)爬蟲(chóng),是在網(wǎng)上進(jìn)行數(shù)據(jù)抓取的程序,使用它能夠抓取特定網(wǎng)頁(yè)的HTML數(shù)據(jù)。雖然我們利用一些庫(kù)開(kāi)發(fā)一個(gè)爬蟲(chóng)程序,但是使用框架可以大大提高效率,縮短開(kāi)發(fā)時(shí)間。Scrapy是一個(gè)使用Python編寫(xiě)的,
輕量級(jí)的,簡(jiǎn)單輕巧,并且使用起來(lái)非常的方便。
Scrapy使用了Twisted異步網(wǎng)絡(luò)庫(kù)來(lái)處理網(wǎng)絡(luò)通訊。整體架構(gòu)大致如下(注:圖片來(lái)自互聯(lián)網(wǎng)):
?
Scrapy主要包括了以下組件:
1、引擎,用來(lái)處理整個(gè)系統(tǒng)的數(shù)據(jù)流處理,觸發(fā)事務(wù)。
2、調(diào)度器,用來(lái)接受引擎發(fā)過(guò)來(lái)的請(qǐng)求,壓入隊(duì)列中,并在引擎再次請(qǐng)求的時(shí)候返回。
3、下載器,用于下載網(wǎng)頁(yè)內(nèi)容,并將網(wǎng)頁(yè)內(nèi)容返回給蜘蛛。
4、蜘蛛,蜘蛛是主要干活的,用它來(lái)制訂特定域名或網(wǎng)頁(yè)的解析規(guī)則。
5、項(xiàng)目管道,負(fù)責(zé)處理有蜘蛛從網(wǎng)頁(yè)中抽取的項(xiàng)目,他的主要任務(wù)是清晰、驗(yàn)證和存儲(chǔ)數(shù)據(jù)。當(dāng)頁(yè)面被蜘蛛解析后,將被發(fā)送到項(xiàng)目管道,并經(jīng)過(guò)幾個(gè)特定的次序處理數(shù)據(jù)。
6、下載器中間件,位于Scrapy引擎和下載器之間的鉤子框架,主要是處理Scrapy引擎與下載器之間的請(qǐng)求及響應(yīng)。
7、蜘蛛中間件,介于Scrapy引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛的響應(yīng)輸入和請(qǐng)求輸出。
8、調(diào)度中間件,介于Scrapy引擎和調(diào)度之間的中間件,從Scrapy引擎發(fā)送到調(diào)度的請(qǐng)求和響應(yīng)。
使用Scrapy可以很方便的完成網(wǎng)上數(shù)據(jù)的采集工作,它為我們完成了大量的工作,而不需要自己費(fèi)大力氣去開(kāi)發(fā)。
來(lái)源:https://www.cnblogs.com/shaosks/p/7237809.html
總結(jié)
以上是生活随笔為你收集整理的15个最受欢迎的Python开源框架(转载)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 密战峨眉电视剧40全集(密战峨眉演员表)
- 下一篇: 人工智能、机器学习和深度学习的区别?