Работа с модулями в Python
Материал из Xgu.ru
- Короткий URL: python/modules
Про Python часто говорят, что это язык, который идёт с батарейками в комплекте. Это означает, что кроме собственно языка, вы получаете ещё множество библиотек, использующихся во всех случаях жизни.
Прежде всего для работы в таких областях:
- Файловая система
- Процессы
- Дата и время
- Случайные числа
- Регулярные выражения
- TCP/IP
- XML
- JSON
Импорт любого модуля выполняется командой import (она имеет несколько форм):
import os
Кроме собственно встроенной библиотеки языка, доступны ещё десятки тысяч пакетов к инсталляции из внешнего репозитория PyPI (38350 на конец 2013 года).
Первая десятка наиболее популярных модулей (по количеству загрузок):
1st distribute 35,957,324 2nd virtualenv 31,956,769 3rd setuptools 29,579,733 4th certifi 28,271,429 5th requests 28,090,908 6th boto 27,397,110 7th wincertstore 25,402,949 8th pip 23,449,879 9th six 21,289,715 10th pbr 20,756,750
Весь список:
- PyPI Ranking (англ.)
Инсталляция внешнего модуля выполняется одной командой:
pip install
Лучше использовать так называемую виртуальную среду virtualenv, в этом случае пакет инсталлируется не глобально в систему, а в локальном каталоге, собственно в виртуальной среде, в которой вы работаете.
[править] Вопросы и ответы
[править] Как посмотреть список загруженных модулей?
import types def imports(): for name, val in globals().items(): if isinstance(val, types.ModuleType): yield val.__name__
или просто
sys.modules
Подробнее:
[править] Как загрузить модуль динамически?
module = __import__('module')
[править] Как посмотреть список доступных модулей?
help('modules')
Или:
pip freeze
Или:
from pkgutil import iter_modules for module in iter_modules(): ...
Ещё хорошая вещь: yolk.
[править] Как обновить существующие пакеты?
$ pip install pip-review $ pip-review --local --interactive
Другие варианты: [1]
[править] Как использовать virtualenv?
При использовании virtualenv локально из исходников:
$ curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz $ tar xvfz virtualenv-X.X.tar.gz $ cd virtualenv-X.X $ python virtualenv.py myVE
[править] Как сделать virtualenv перемещаемым?
Использовать ключ --relocatable. Окружение становится перемещаемым. Минус. что нужно вызывать virtualenv после каждой инсталляции нового модуля.
Подробнее:
[править] Когда выполняешь тестирование, можно ли подменять функции или классы и подсовывать нужные результаты?
Да, можно. Есть несколько модулей для этого, например mocker.
Дополнительная информация:
[править] Как посмотреть список доступных модулей?
help('modules')
Если есть pip:
pip freeze
[править] Как посмотреть, какая версия пакета доступна для импорта?
>>> import pkg_resources >>> pkg_resources.get_distribution("blogofile").version '0.7.1'
Подробнее: [2].
[править] Как поднять локальный репозиторий eggs?
Для этого лучше всего использовать collective.eggproxy (англ.). После того как он поднимется, можно указывать локальный репозиторий например в pip и в easy_install.
easy_install -i http://localhost:8888/ -H "*localhost*" iw.fss
env/bin/pip install -v --index-url http://127.0.0.1:48888/ six
Или в конфигурационных файлах:
~/.pip/pip.conf
[global] index-url = http://localhost:8888/
setuptools, ~/.pydistutils.cfg:
[easy_install] index_url = http://localhost:8888/
buildout, buildout.cfg:
[buildout] index = http://localhost:8888/
[править] Как перезагрузить уже загруженный модуль, если он был изменен в ходе работы программы?
import module1 #.... # Later on: module1 = reload( module1 )
Подробнее:
Информация о Python на xgu.ru | ||
---|---|---|
Реализации | Cython • Psyco • PyPy | |
Веб-фреймворки | Django • Flask • Zope | |
IDE | Pydev • NetBeans | |
Курсы | Python для сетевых инженеров | |
Другое | aalib • ctypes • gevent • mpmath • pjsua • Pandas • pyparsing • virtualenv • GMPY • IPython • Jinja2 • Python и Vim • Работа с модулями в Python • SWIG • Scapy • SciPy • Работа с датой и временем в Python • Python как shell • Web и Python • Алгоритмы, сложные структуры данных и дискретная математика в Python • Анализ кода Python • Интеграция Python с другими языками • Объекты и классы в Python • Оформление кода Python • Параллелизм и конкурентное исполнение в Python • Профайлинг в Python • Работа с базами данных в Python • Работа с операционной системой в Python • Работа с сетью в Python • Работа с текстами в Python • Работа с файлами в Python • Сравнение Python с другими языками • Тестирование в Python • Типы в Python • Элементы функционального программирования в Python • Элементы языка Python |