non standard library
Павел Тысляцкий
virtualenv + pip*
- независимые окружения**
- не портит систему
- не нужно sudo
- любые версии
- pypi
- wheel
- requirements.txt
* Убрать слайд после перехода на python 3.4
** Есть ньансы при которых окружения являются не абсолютно независимыми
IPython + IPython-NoteBook
- интерактивная консоль
- подсветка кода
- автодополноение
- дополнительный синтаксис
nose + mock + coverage + PEP8
- быстрые тесты
- независимые тесты
- pep8 код
SH
from sh import *
# print wlan0 interface
print(ifconfig("wlan0"))
# checkout master branch
git.checkout("master")
# print the contents of this directory
print(ls("-l"))
# get the longest line of this file
longest_line = wc(__file__, "-L")
https://github.com/amoffat/sh
DOCOPT
"""Usage: my_program.py [-hso FILE] [--quiet | --verbose] [INPUT ...] -h --help show this -s --sorted sorted output -o FILE specify output file [default: ./test.txt] --quiet print less text --verbose print more text """ from docopt import docopt if __name__ == '__main__': arguments = docopt(__doc__, version='my program 2.0') print(arguments)
https://github.com/docopt/docopt
LXML
- очень быстрый
- хорош для больших файлов
- XML
- HTML
PyQuery
>>> from pyquery import PyQuery as pq >>> from lxml import etree >>> import urllib >>> d = pq(url='http://google.com/', opener=lambda url, **kw: urllib.urlopen(url).read()) >>> d("#hello") [<p#hello.hello>] >>> p = d("#hello") >>> print(p.html()) Hello world ! >>> p.html("you know <a href='http://python.org/'>Python</a> rocks") [<p#hello.hello>] >>> print(p.html()) you know <a href="http://python.org/">Python</a> rocks >>> print(p.text()) you know Python rocks
https://github.com/gawel/pyquery
REQUESTS
Requests: HTTP for Humans
>>> r = requests.get('https://api.github.com', auth=('user', 'pass'))
>>> r.status_code 204
>>> r.headers['content-type'] 'application/json'
>>> r.text
...
https://github.com/kennethreitz/requests
ScraPy
class MySpider(CrawlSpider): name = 'example.com' allowed_domains = ['example.com'] start_urls = ['http://www.example.com'] rules = ( Rule(SgmlLinkExtractor(deny=('item\.php',))), Rule(SgmlLinkExtractor(allow=('item\.php',)), callback='parse'), ) def parse(self, response): sel = Selector(response) item = Item() item['id'] = sel.xpath('//td[@id="item"]/text()').re(r'ID: (\d+)') item['name'] = sel.xpath('//td[@id="item_name"]/text()').extract() return item
http://scrapy.org
pycrypto
- хеш функции
- шифрование
- симметричное
- асимметричное
-
python 2.1+
Pillow (Pil)
>>> from PIL import Image >>> im = Image.open("lena.ppm") >>> print(im.format, im.size, im.mode) PPM (512, 512) RGB
https://github.com/python-imaging/Pillow
GIMP
image = pdb.gimp_file_load('border.xcf', 'border.xcf')
layer = pdb.gimp_file_load_layer(image, 'content.xcf')
layer.set_offsets(5, 5)
image.add_layer(layer, 1)
merged_layer = image.merge_visible_layers(0)
image.scale(30, 36)
pdb.file_png_save2(image,merged_layer,'bi.png','bi.png',0,9,0,0,0,0,0,0,0)
gimp --no-interface --batch-interpreter python-fu-eval --batch "<PY BODY>"
http://www.gimp.org/docs/python
Tempaltes
- Jinja2 (jinja.pocoo.org)
- Mako (makotemplates.org)
- Genshi (genshi.edgewall.org)
WEB
-
Tornado (tornadoweb.org)
- Django (djangoproject.com)
- Pyramid (pylonsproject.org)
- Flask (flask.pocoo.org)
- CherryPy (cherrypy.org)
- Bottle (bottlepy.org)
- WebPy (webpy.org)
GUI
- PySide + PyQt (qt-project.org/wiki/PySide)
- PyGTK (pygtk.org)
- wxPython (wxpython.org)
- Kivy (kivy.org)
Administration
- Ansible (ansible.com)
- Salt (github.com/saltstack/salt)
- Fabric (github.com/fabric/fabric)
Data
- NumPy (numpy.org)
- SciPy (scipy.org)
- SciKit-Learn (scikit-learn.org)
- Pandas (pandas.pydata.org)
- MatPlotLib (matplotlib.org)
- Spark (spark.apache.org)
- Disco (discoproject.org)
Persistence
- SqlAlchemy (sqlalchemy.org)
- Peewee (github.com/coleifer/peewee)
- redis-py (github.com/andymccurdy/redis-py)
- pymongo (github.com/mongodb/mongo-python-driver)
- openpyxl (pythonhosted.org/openpyxl)
QUEUES
- pika (github.com/pika/pika)
- Celery (celeryproject.org)
- RQ (python-rq.org)
и МНОГОЕ ДРУГОЕ...
- более 40000 пакетов на PyPi
- более 88000 проектов на GitHub
- практически на все случаи жизни
Ссылки
http://pypi-ranking.info/alltime
http://pythonhackers.com/open-source
https://wiki.python.org/moin/UsefulModules
Вопросы
pavel.tyslyatsky@gmail.comNon Standard Library
By Pavel Tyslacki
Non Standard Library
- 1,115