现在Python成为了炽手可热的一门语言,在如何快速入门的同时,如何进行高效的开发是一门语言非常重要的优势。我们收集马哥Python了超过2000名学员的意见和建议,对Python常用的框架进行了梳理,这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等。
Python目前主流的应用包括:Web开发、图形界面开发、系统网络运维、网络编程、科学数字计算、3D游戏开发,而我们特别针对这6个方向进行了框架和库的整理。
一、Python的几大主流Web开发框架
1.Django: Python Web应用开发框架Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响。Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。
网址:The Web framework for perfectionists with deadlines
2.Bottle: 微型Python Web框架Bottle是一个简单高效的遵循WSGI的微型python Web框架。说微型,是因为它只有一个文件,除Python标准库外,它不依赖于任何第三方模块。
网址:Bottle: Python Web Framework
3.Flask:也是一个Web应用框架
不同于Django它是轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask也被称为microframework,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。 但是Flask是可以扩增的,你可以使用可以用Flask-extension增加前边没有的一些功能。
网址:Flask (A Python Microframework)
4.Tornado:异步非阻塞IO的Python Web框架Tornado的全称是Torado Web Server,从名字上看就可知道它可以用作Web服务器,但同时它也是一个Python Web的开发框架。最初是在FriendFeed公司的网站上使用,FaceBook收购了之后便开源了出来。Tornado 和现在的主流 Web 服务器框架和大多数Python框架有着明显的区别:它是非阻塞式服务器,而且速度相当快。也是比较常被使用的Python开源框架之一。
网址:Tornado Web Server – Tornado 4.5.1 documentation
Web2py:全栈式Web框架Web2py是一个为Python语言提供的全功能Web应用框架,旨在敏捷快速的开发Web应用,具有快速、安全以及可移植的数据库驱动的应用,兼容Google App Engine。
webpy: 轻量级的Python Web框架(特别提示本框架创作人离开,没有更新,慎用!)webpy的设计理念力求精简(Keep it simple and powerful),源码很简短,只提供一个框架所必须的东西,不依赖大量的第三方模块,它没有URL路由、没有模板也没有数据库的访问。
网址:Welcome to web.py! (web.py)
二、Python的爬虫框架
Scrapy:Python的爬虫框架Scrapy是一个使用Python编写的,轻量级的,简单轻巧,并且使用起来非常的方便。
网址:A Fast and Powerful Scraping and Web Crawling Framework
三、图形界面开发框架
PyQt
PyQt能够实现高人气Qt库,因此如果大家熟知如何利用其它语言进行Qt开发,那么上手PyQt也不会出现什么障碍。其能够让Python应用具备跨平台外观风格与使用感受,同时继承Qt社区所带来的庞大知识支持与工具选项。
PyQt同时提供商用与GPL许可(这一点与Qt项目本身有所不同),感兴趣的朋友也可点击此处了解与PyQt许可相关的常见问题(英文原文)。
网址:Riverbank | Software | PyQt | What is PyQt?
Tkinter
如果要为Python选出一款能够称得上标准的GUI工具包,那么答案应该是Tkinter。Tkinter是一款以Tcl/Tk为基础的打包工具,而后者则属于诞生自上世纪九十年代初的高人气图形界面与语言组合。Tkinter的最大优势在于拥有丰富的资源,其中包括文本与代码示例以及庞大的用户社区。通过示例,我们能够轻松上手这套图形界面实现方案。
Tkinter遵循Python许可,同时基于Tcl/Tk的BSD许可。
网址:24.1. Tkinter – Python interface to Tcl/Tk – Python 2.7.13 documentation
WxPython
WxPython将针对C++的wxWidgets跨平台GUI库带给了Python。WxPython是一套较为现代的方案,其外观的原生程度高于Tkinter,这主要归功于其更倾向于针对不同系统平台建立控件成果。其易于上手,同时拥有快速发展的开发者社区。不过大家需要自行将wxPython与应用相绑定,因为其无法通过Python自动进行安装。
WxPython采用其父项目wxWindows的库许可,这一许可获得了OSI批准。
四、Python系统运维常用库
1、psutil是一个跨平台库(http://code.google.com/p/psutil/)
能够实现获取系统运行的进程和系统利用率(内存,CPU,磁盘,网络等),主要用于系统监控,分析和系统资源及进程的管理。
2、IPy(http://github.com/haypo/python-ipy),辅助IP规划。
3、dnspython(http://dnspython.org)Python实现的一个DNS工具包。
4、difflib:difflib作为Python的标准模块,无需安装,作用是对比文本之间的差异。
5、filecmp:系统自带,可以实现文件,目录,遍历子目录的差异,对比功能。
6、smtplib:发送电子邮件模块
7、pycurl(http://pycurl.sourceforge.net)是一个用C语言写的libcurl Python实现,功能强大,支持的协议有:FTP,HTTP,HTTPS,TELNET等,可以理解为Linux下curl命令功能的Python封装。
8、XlsxWriter:操作Excel工作表的文字,数字,公式,图表等。
9、rrdtool:用于跟踪对象的变化,生成这些变化的走走势图
10、scapy(http://www.wecdev.org/projects/scapy/)是一个强大的交互式数据包处理程序,它能够对数据包进行伪造或解包,包括发送数据包,包嗅探,应答和反馈等功能。
11、Clam Antivirus免费开放源代码防毒软件,pyClamad,可以让Python模块直接使用ClamAV病毒扫描守护进程calmd。
12、pexpect:可以理解成Linux下expect的Python封装,通过pexpect我们可以实现对ssh,ftp,passwd,telnet等命令行进行自动交互,而无需人工干涉来达到自动化的目的。
13、paramiko是基于Python实现的SSH2远程安装连接,支持认证及密钥方式。可以实现远程命令执行,文件传输,中间SSH代理等功能。相对于Pexpect,封装的层次更高,更贴近SSH协议的功能,官网地址:http://paramiko.org(依赖:Crypto,Ecdsa,Python开发包python-devel)
14、fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行,文件上传,下载及完整执行日志输出等功能。Fabric在paramiko的基础上做了更高一层的封装,操作起来更加简单。官网地址:http://www.fabfile.org(依赖setuptools,Crypto,paramiko包支持)
15、CGIHTTPRequestHandler实现对CGI的支持。
16、ansible(http://www.ansibleworks.com/)一种集成IT系统的配置管理,应用部署,执行特定任务的开源平台。基于Python实现,由Paramiko和PyYAML两个关键模块构建。Ansibl与Saltstack最大的区别是Ansible无需在被控主机上部署任何客户端,默认直接通过SSH通道进行远程命令执行或下发功能。
17、YAML:是一种用来表达数据序列的编程语言。
18、playbook:一个非常简单的配置管理和多主机部署系统。
19、saltstack(http://saltstack.com)是一个服务器基础架构集中化管理平台,一般可以理解为简化版的puppet和加强版的func。Saltstack基于Python语言实现,结合轻量级消息队列ZeroMQ,与Python每三方模块(Pyzmq,PyCrypto,Pyjinja2,python-msgpack和PyYAML等)构建。
20、func,为解决集群管理,监控问题需设计开发的系统管理基础框架。
四、Python科学数字计算的框架
Python中的数据科学计算库有Numpy、Scipy、pandas、matplotlib
Numpy是一个基础性的Python库,为我们提供了常用的数值数组和函数。numpy(NumericalPython extensions)是一个第三方的Python包,用于科学计算。这个库的前身是1995年就开始开发的一个用于数组运算的库。经过了长时间的发展,基本上成了绝大部分Python科学计算的基础包,当然也包括所有提供Python接口的深度学习框架。
Scipy是Python的科学计算库,对Numpy的功能进行了扩充,同时也有部分功能是重合的。Numpy和Scipy曾经共享过基础代码。
pandas是一个流行的开源Python项目,它的名称取panel data(面板数据,一个计量经济学的术语)和Python data analysis(Python数据分析)的意思。matplotlib是一个基于Numpy的绘图库。
网址:Python Data Analysis Library
Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型地2D图表和一些基本的3D图表。Matplotlib最早是为了可视化癫痫病人的脑皮层电图相关的信号而研发,因为在函数的设计上参考了MATLAB,所以叫做Matplotlib。Matplotlib首次发表于2007年,在开源和社区的推动下,现在在基于Python的各个科学计算领域都得到了广泛应用。Matplotlib的原作者John D. Hunter博士是一名神经生物学家,2012年不幸因癌症去世,感谢他创建了这样一个伟大的库。
网址:Python plotting – Matplotlib 2.0.2 documentation
四、Python的3D游戏开发框架
Pygame是跨平台Python模块,专为电子游戏设计。包含图像、声音。pygame建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚。基于这样一个设想,所有需要的游戏功能和理念都(主要是图像方面)都完全简化为游戏逻辑本身,所有的资源结构都可以由高级语言提供,如Python。
ocos2d-python上面很多都用pyglet这个库的,里面主要的精灵什么的也是针对pyglet的封装,另外还封装了些音频库什么的。
网址:cocos2d
五、Python的其他流行的开发框架
Diesel:基于Greenlet的事件I/O框架Diesel提供一个整洁的API来编写网络客户端和服务器。支持TCP和UDP。
Cubes:轻量级Python OLAP框架Cubes是一个轻量级Python框架,包含OLAP、多维数据分析和浏览聚合数据(aggregated data)等工具。
Kartograph.py:创造矢量地图的轻量级Python框架Kartograph是一个Python库,用来为ESRI生成SVG地图。Kartograph.py目前仍处于beta阶段,你可以在virtualenv环境下来测试。
Pulsar:Python的事件驱动并发框架Pulsar是一个事件驱动的并发框架,有了pulsar,你可以写出在不同进程或线程中运行一个或多个活动的异步服务器。
Falcon:构建云API和网络应用后端的高性能Python框架Falcon是一个构建云API的高性能Python框架,它鼓励使用REST架构风格,尽可能以最少的力气做最多的事情。
Dpark:Python版的SparkDPark是Spark的Python克隆,是一个Python实现的分布式计算框架,可以非常方便地实现大规模数据处理和迭代计算。DPark由豆瓣实现,目前豆瓣内部的绝大多数数据分析都使用DPark完成,正日趋完善。
Buildbot:基于Python的持续集成测试框架Buildbot是一个开源框架,可以自动化软件构建、测试和发布等过程。每当代码有改变,服务器要求不同平台上的客户端立即进行代码构建和测试,收集并报告不同平台的构建和测试结果。
Zerorpc:基于ZeroMQ的高性能分布式RPC框架Zerorpc是一个基于ZeroMQ和MessagePack开发的远程过程调用协议(RPC)实现。和 Zerorpc 一起使用的 Service API 被称为 zeroservice。Zerorpc 可以通过编程或命令行方式调用。
好了,最后我们再来看看,到底是哪些人学习呢?
目前来学的人群分为以下几类:
第一类:入行编程新手:大学刚毕业或者其他行业转岗,想从事编程开发的工作,目前认为Python比较火,想入行;
第二类:Linux系统运维人员:Linux运维以繁杂著称,对人员系统掌握知识的能力要求非常高,那么也就需要一个编程语言能解决自动化的问题,Python开发运维工作是首选,Python运维工资的薪资普遍比Linux运维人员的工资高。
第三类:做数据分析或者人工智能:不管是常见的大数据分析或者一般的金融分析、科学分析都比较大程度的应用了数据分析,人工智能的一些常见应用也使用了Python的一些技术。
第四类:在职程序员转Python开发:平常只关注div+css这些页面技术,很多时候其实需要与后端开发人员进行交互的,现在有很多Java程序在转到Python语言,他们都被Python代码的优美和开发效率所折服
第五类:其他:一些工程师以前在做很多SEO优化的时候,苦于不会编程,一些程序上面的问题,得不到解决,只能做做简单的页面优化。 现在学会Python之后,可以编写一些查询收录,排名,自动生成网络地图的程序,解决棘手的SEO问题
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容