Python import, как и для чего?
В языке программирования Python подключение пакетов и модулей осуществляется с помощью import. Это позволяет распределять код по логическим «узлам» приложения(модели данных, обработчики, и тп.), что позволяет получить менее нагруженные кодом файлы.
- Повышается читаемость кода.
- Код логически разбит по «узлам», его поиск и дальнейший отлов ошибок становится понятнее и проще.
- Для разработки в команде это дает более четкое понимание, что и где делает каждый при выполнении «задания».
- Нужно понимать, что делается и для чего.
Как использовать import?
Синтаксис import в Python достаточно прост и интуитивно понятен:
# В данной строке импортируется something_we_want import something_we_want # В данной строке импортируется something_we_want, как aww(логично и просто) import something_we_want as aww # В данной строке импортируется из something_we_want something(логично и просто) from something_we_want import something # В данной строке импортируется из something_we_want something, как s(логично и просто) from something_we_want import something as s # Синтаксис as позволяет обращаться к импортируемому по новому нами описанному # далее имени(это работает только в рамках нашего файла)
Что можно импортировать?
Для более глубокого понимания import стоит рассмотреть пример, представленный ниже.
def something(): pass somedata = 5
# 1 случай import something_we_want something_we_want.something() import something_we_want print(something_we_want.somedata) # 2 случай import something_we_want as aww aww.something() import something_we_want as aww print(aww.somedata) # 3 случай from something_we_want import something something() from something_we_want import somedata print(somedata) # 4 случай from something_we_want import something as s s() from something_we_want import somedata as sd print(sd) # Классы импортируются по аналогии с функциями
Красиво, читаемо и понятно.
В чем же подвох?
Но даже в таком простом примере есть подвох, о котором многие не догадываются(если вы начинающий программист, то лучше перейдите к следующему оглавлению).
Идеология Python достаточно интересна, что позволяет ему иметь низкий порог вхождения, низкое время написания кода, высокую читаемость, но именно в ней и кроется подвох.
По своему опыту использования данного языка, сложилось отчетливое ощущение главной идеи ООП(все есть объект). Что же в этом плохого?
Все файлы, функции и тд. это объект. Но что это за объект и класс стоят за файлами(модулями)?
Все просто, это любимый всеми программистами класс, использующий паттерн проектирования Singleton.
Поэтому при достаточно ветвистой структуре, импорт переменной и дальнейшая ее модификация может порождать достаточно не простые в понимании баги(переменная в своем цикле жизни может иметь любое значение и никаких гарантий нет).
Ветвистая структура приложения и существующие подходы импортирования
Часто в разработке приложений программисты пытаются разбить программу по логическим «узлам». Данный подход повышает читаемость и позволяет вести разработку в команде(один человек занимается реализацией одного «узла», второй другого). Так порождается структура приложения, которая зачастую виду сложности функционала является достаточно обширной(ветвистой, потому что имея одну точку входа откуда уже обрастая функционалом это становится похожим на дерево).
Пример ветвистой структуры:
Существует 2 подхода импортирования(лучше выбрать один и придерживаться его весь проект):
- Именованный(абсолютный)
- Неименованный(относительный)
Пример именованного импорта из models.py в auth.py:
# auth.py from app.models import User
Пример неименованного импорта из models.py в auth.py:
# auth.py from ..models import User # Количество точек указывает на сколько (обьектов) мы поднимаемся от исходного. # В данном примере первая точка поднимает нас на уровень обьекта handlers, # А вторая точка поднимает нас на уровень обьекта app
Это два абсолютно разных подхода. В первом случае мы «идем» из «корня»(входной точки нашего приложения). Во втором случае мы «идем» от «листа»(нашего файла).
Плюсы и минусы подходов импорта:
Видна структура импорта и приложения.
Видна часть структуры импорта.
Программисту не нужно знать полную структуру приложения.
Импорт не зависит от точки входа.
Код становится не привязанным к приложению. Что по сути позволяет исполнить код из любой точки(тесты, отдельно и тд.). Повышается отлаживаемость. Появляется возможность разработки отдельных узлов приложения без полного вовлечения программиста в проект.
Импорт зависит от точки входа.
Программисту необходимо знать структуру приложения. Код сильно связан с приложением. Что по сути усложняет отладку, тестирование, и тд. Программист становится сильно вовлеченным в проект.
Снижается читаемость импорта.
Хоть первый подход и имеет существенные минусы в использовании, но тем не менее он популярен. Программистам он привычнее, хоть и имеет недостатки. А начинающие часто не задумываются об альтернативах.
P.S.
Данная статья была написана для начинающих программистов, которые хотят научиться писать на языке программирования Python, поэтому часть примеров заведомо упрощена и нацелена на освещение существующих подходов.
Пишите тот код, который бы сами хотели получить от исполнителя.
5 разных библиотек Python, которые сэкономят ваше время

В этой подборке, переводом которой мы решили поделиться к старту курса о машинном и глубоком обучении, по мнению автора, каждая библиотека заслуживает отдельной статьи. Всё начинается с самого начала: предлагается библиотека, которая сокращает шаблонный код импортирования; заканчивается статья пакетом удобной визуализации данных для исследовательского анализа. Автор также касается работы с картами Google, ускорения и упрощения работы с моделями ML и библиотеки, которая может повысить качество вашего проекта в области обработки естественного языка. Посвящённый подборке блокнот Jupyter вы найдёте в конце.
PyForest
Когда вы начинаете писать код для проекта, каков ваш первый шаг? Наверное, вы импортируете нужные библиотеки. Проблема в том, что заранее неизвестно, сколько библиотек нужно импортировать, пока они вам не понадобятся, то есть пока вы не получите ошибку.
Вот почему PyForest — это одна из самых удобных библиотек, которые я знаю. С её помощью в ваш блокнот Jupyter можно импортировать более 40 популярнейших библиотек (Pandas, Matplotlib, Seaborn, Tensorflow, Sklearn, NLTK, XGBoost, Plotly, Keras, Numpy и другие) при помощи всего одной строки кода.
Выполните pip install pyforest. Для импорта библиотек в ваш блокнот введите команду from pyforest import *, и можно начинать. Чтобы узнать, какие библиотеки импортированы, выполните lazy_imports().

При этом с библиотеками удобно работать. Технически они импортируются только тогда, когда вы упоминаете их в коде. Если библиотека не упоминается, она не импортируется.
Emot
Эта библиотека может повысить качество вашего проекта по обработке естественного языка. Она преобразует эмотиконы в их описание. Представьте, например, что кто-то оставил в Твиттере сообщение “I ️️[здесь в оригинале эмодзи «красное сердце», новый редактор Хабра вырезает его] Python”. Человек не написал слово “люблю”, вместо него вставив эмодзи. Если твит задействован в проекте, придётся удалить эмодзи, а значит, потерять часть информации.
Вот здесь и пригодится пакет emot, преобразующий эмодзи в слова. Для тех, кто не совсем понял, о чём речь, эмотиконы — это способ выражения через символы. Например, 🙂 означает улыбку, а 🙁 выражает грусть. Как же работать с библиотекой?
Чтобы установить Emot, выполните команду pip install emot, а затем командой import emot импортируйте её в свой блокнот. Нужно решить, с чем вы хотите работать, то есть с эмотиконами или с эмодзи. В случае эмодзи код будет таким: emot.emoji(your_text). Посмотрим на emot в деле.

Выше видно предложение I ️ ️️[эмодзи «красное сердце»] Python, обёрнутое в метод Emot, чтобы разобраться со значениями. Код выводит словарь со значением, описанием и расположением символов. Как всегда, из словаря можно получить слайс и сосредоточиться на необходимой информации, например, если я напишу ans[‘mean’], вернётся только описание эмодзи.

Geemap
Говоря коротко, с её помощью можно интерактивно отображать данные Google Earth Engine. Наверное, вы знакомы с Google Earth Engine и всей его мощью, так почему не задействовать его в вашем проекте? За следующие несколько недель я хочу создать проект, раскрывающий всю функциональность пакета geemap, а ниже расскажу, как можно начать с ним работать.
Установите geemap командой pip install geemap из терминала, затем импортируйте в блокнот командой import geemap. Для демонстрации я создам интерактивную карту на основе folium:
import geemap.eefolium as geemap Map = geemap.Map(center=[40,-100], zoom=4) Map
Как я уже сказал, я не изучил эту библиотеку настолько, насколько она того заслуживает. Но у неё есть исчерпывающий Readme о том, как она работает и что можно делать с её помощью.
Dabl
Позвольте мне рассказать об основах. Dabl создан, чтобы упростить работу с моделями ML для новичков. Чтобы установить её, выполните pip install dabl, импортируйте пакет командой import dabl — и можно начинать. Выполните также строчку dabl.clean(data), чтобы получить информацию о признаках, например о том, есть ли какие-то бесполезные признаки. Она также показывает непрерывные, категориальные признаки и признаки с высокой кардинальностью.

Чтобы визуализировать конкретный признак, можно выполнить dabl.plot(data).
Наконец, одной строчкой кода вы можете создать несколько моделей вот так: dabl.AnyClassifier, или так: dabl.Simplefier(), как это делается в scikit-learn. Но на этом шаге придётся предпринять некоторые обычные шаги, такие как создание тренировочного и тестового набора данных, вызов, обучение модели и вывод её прогноза.
# Setting X and y variables X, y = load_digits(return_X_y=True) # Splitting the dataset into train and test sets X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1) # Calling the model sc = dabl.SimpleClassifier().fit(X_train, y_train) # Evaluating accuracy score print(“Accuracy score”, sc.score(X_test, y_test))
Как видите, Dabl итеративно проходит через множество моделей, включая Dummy Classifier (фиктивный классификатор), GaussianNB (гауссовский наивный Байес), деревья решений различной глубины и логистическую регрессию. В конце библиотека показывает лучшую модель. Все модели отрабатывают примерно за 10 секунд. Круто, правда? Я решил протестировать последнюю модель при помощи scikit-learn, чтобы больше доверять результату:

Я получил точность 0,968 с обычным подходом к прогнозированию и 0,971 — с помощью Dabl. Для меня это достаточно близко! Обратите внимание, что я не импортировал модель логистической регрессии из scikit-learn, поскольку это уже сделано через PyForest. Должен признаться, что предпочитаю LazyPredict, но Dabl стоит попробовать.
SweetViz
Это low-code библиотека, которая генерирует прекрасные визуализации, чтобы вывести ваш исследовательский анализ данных на новый уровень при помощи всего двух строк кода. Вывод библиотеки — интерактивный файл HTML. Давайте посмотрим на неё в общем и целом. Установить её можно так: pip install sweetviz, а импортировать в блокнот — строкой import sweetviz as sv. И вот пример кода:
my_report = sv.analyze(dataframe) my_report.show_html()
Вы видите это? Библиотека создаёт HTML-файл с исследовательским анализом данных на весь набор данных и разбивает его таким образом, что каждый признак вы можете проанализировать отдельно. Возможно также получить численные или категориальные ассоциации с другими признаками; малые, большие и часто встречающиеся значения. Также визуализация изменяется в зависимости от типа данных. При помощи SweetViz можно сделать так много, что я даже напишу о ней отдельный пост, а пока настоятельно рекомендую попробовать её.

Заключение
Все эти библиотеки заслуживают отдельной статьи и того, чтобы вы узнали о них, потому что они превращают сложные задачи в прямолинейно простые. Работая с этими библиотеками, вы сохраняете драгоценное время для действительно важных задач. Я рекомендую попробовать их, а также исследовать не упомянутую здесь функциональность. На Github вы найдёте блокнот Jupyter, который я написал, чтобы посмотреть на эти библиотеки в деле.
Этот материал не только даёт представление о полезных пакетах экосистемы Python, но и напоминает о широте и разнообразии проектов, в которых можно работать на этом языке. Python предельно лаконичен, он позволяет экономить время и в процессе написания кода, выражать идеи максимально быстро и эффективно, то есть беречь силы, чтобы придумывать новые подходы и решения задач, в том числе в области искусственного интеллекта, получить широкое и глубокое представление о котором вы можете на нашем курсе «Machine Learning и Deep Learning».

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:
- Профессия Data Scientist
- Профессия Data Analyst
- Курс по Data Engineering
ПРОФЕССИИ
- Профессия Fullstack-разработчик на Python
- Профессия Java-разработчик
- Профессия QA-инженер на JAVA
- Профессия Frontend-разработчик
- Профессия Этичный хакер
- Профессия C++ разработчик
- Профессия Разработчик игр на Unity
- Профессия Веб-разработчик
- Профессия iOS-разработчик с нуля
- Профессия Android-разработчик с нуля
КУРСЫ
- Курс по Machine Learning
- Курс «Machine Learning и Deep Learning»
- Курс «Математика для Data Science»
- Курс «Математика и Machine Learning для Data Science»
- Курс «Python для веб-разработки»
- Курс «Алгоритмы и структуры данных»
- Курс по аналитике данных
- Курс по DevOps
Тест по дисциплине «Алгоритмизация и программирование»
Председатель цикловой комиссии __________Мукушева Л.А.
Тест по дисциплине «Алгоритмизация и программирование»
- Язык программирования Python подходит для разработки:
- Компьютерных и мобильных приложений
- Аналитика и машинное обучение
- Игр
- Ничего из этого.
- Аккумулятор
- Назовите тип алгоритма:

- Разветвляющийся
- Линейный
- Циклический
- Смешанный
- Комбинированный
- Назовите тип алгоритма:

- Линейный
- Разветвляющийся
- Циклический
- Смешанный
- Комбинированный
- Назовите тип алгоритма:

- Разветвляющийся
- Линейный
- Смешанный
- Циклический
- Комбинированный
- Что хранит в себе переменная?
- Имя
- Значение
- Тип
- Длину своего значения
- Периметр
- Что обозначает тип данных int?
- Целочисленное
- Вещественное
- Строковое
- Булевое
- Логическое
- Выберите правильную запись оператора присваивания:
- 10 = х
- у = 7,8
- а = 5
- а == b + x
- а — b
- Укажите оператор ввода:
- input()
- print()
- int()
- random()
- cout()
- Сколько возможных значений у переменной типа bool?
- 2
- 4
- 10
- Сколько угодно
- 15
- Какой оператор здесь используется?
If n b = n + a
- Условный оператор
- Оператор присваивания
- Оператор сложения
- Оператор умножения
- Оператор цикла
- Что лучше использовать для множественного ветвления?
- if – elif –else
- Много if
- if – else – elif
- while
- for
- Оператор цикла в языке Python:
- while
- for
- if
- real
- Сколько раз произойдет итерация цикла? (Итерация – единичное выполнение тела цикла)
print(“Осталось”, total) total = 100 i = 0 while i n = int(input()) total = total – n i = i + 1
- 4
- 5
- 6
- 0
- 8
- Для чего нужен оператор break?
- Для завершения программы
- Для выхода из цикла
- Для поломки компьютера
- Для удаления программы
- Для возврата программы
- Где находятся параметры, а где аргументы функции?
- Параметры пишутся при объявлении функции, аргументы при вызове
- Аргументы пишутся при объявлении функции, параметры при вызове
- Это одно и то же!
- У функции есть только параметры
- У функции нет параметров
- Что делает функция len()?
- Возвращает длину строки
- Возвращает случайное число
- Возвращает номер символа
- Возвращает модуль числа
- Возвращает значение
- Как добавить модуль в программу?
- import math
- import math()
- import (math)
- import.math
- import.**math
- На каких операционных системах может работать Python?
- Windows
- Linux
- macOS
- Ничего из этого
- Yandex
- От чего язык программирования называется «Питон»?
- В честь змеи
- В честь ТВ-шоу
- В честь игры
- В честь блюда
- В честь собаки
- Создатель языка программирования Python
- Гвидо Ван Россум
- Дэвид Паттерсон
- Эрвин Дональд Кнут
- Джеймс Артур Гослинг
- Никлаус Вирт
- а = 345. Что выведет команда print(//100)
- 3
- 5
- 4
- 34
- 95
- Выберите циклический алгоритм
- k = 0
- a = int(input())
- a = int(input())
- В какой строке правильно записан ввод числа с клавиатуры?
- a = int(input))
- b=input(int())
- c=int(input())
- s=a+b+c
- print(s)
- 1
- 2
- 5
- 4
- 6
- Что такое «else»?
- Так как
- Иначе
- Если
- Потому что
- Начало
- Сколько раз программа напишет слово «Пока»?
- 9
- 0
- 10
- Бесконечно
- -5
- Как получить данные от пользователя?
- Использовать метод get()
- Использовать метод cin()
- Использовать метод read()
- Использовать метод readLine()
- Использовать метод input()
- Что покажет этот код?
- Ошибку в коде
- «Найдено» и «Готово»
- «Готово»
- «Найдено»
- Нет правильного ответа
- Что будет результатом этого кода?
- 23
- 10
- 11
- Ошибка
- 0
- Какие ошибки допущены в коде ниже?
- Функция не может вызывать сама себя
- Необходимо указать тип возвращаемого значения
- Функция всегда будет возвращать 1
- В коде нет никаких ошибок
- Нет правильного ответа
- Где правильно создана переменная?
- int num = 2
- Нет подходящего варианта
- var num = 2
- $num = 2
- num = float(2)
- Что будет показано в результате?
- «Hi, name»
- «Hi, «
- Ошибка
- «Hi, John»
- «John»
- Какая функция выводит что-либо в консоль?
- write();
- log();
- out();
- print();
- cin();
- Какая библиотека отвечает за время?
- localtime
- clock
- Time
- time
- Date
- Что покажет этот код?
- Ошибку, так как i не присвоена
- Ошибку из-за неверного вывода
- Числа: 1, 3 и 5
- Числа: 0, 2 и 4
- Числа: 1 и 3
- Сколько библиотек можно импортировать в один проект?
- Не более 3
- Не более 10
- Не более 5
- Не более 23
- Неограниченное количество
- Что будет получено в результате вычисления следующего выражения:
- 0
- 1
- 3
- None
- синтаксическая ошибка
- Какого типа значение получится в результате вычисления следующего выражения:
- str (строка)
- tuple (кортеж)
- это синтаксическая ошибка
- unicode (Unicode-строка)
- list (список)
- Какого типа значение получится в результате вычисления следующего выражения:
- str (строка)
- tuple (кортеж)
- это синтаксическая ошибка
- unicode (Unicode-строка)
- list (список)
- Что будет выведено следующей программой:
- 212
- 121
- 111
- 11 11 21
- 2211
Ответы:
1 A, B, C 11 A 21 A 31 E 2 B 12 A, B 22 A 32 D 3 C 13 B 23 C 33 D 4 A 14 B 24 C, D 34 D 5 B 15 A 25 B 35 E 6 A 16 A 26 B 36 E 7 C 17 A 27 E 37 D 8 A 18 A, B, C 28 D 38 C 9 A 19 B 29 E 39 E 10 A, B, C 20 A 30 D 40 A Урок 5.
Модули и пакеты в Python. Импорт. Виртуальная среда venv.Рассматриваем модули и пакеты из стандартной библиотеки Python и PyPI. Учимся использовать инструкции import и from..import и различать абсолютный и относительный импорт. Разбираемся с виртуальными пространствами venv. Создаем собственные модули.

Курс «Программирование на Python»
Урок 5.
Модули и пакеты в Python. Импорт. Виртуальная среда venv.Рассматриваем модули и пакеты из стандартной библиотеки Python и PyPI. Учимся использовать инструкции import и from..import и различать абсолютный и относительный импорт. Разбираемся с виртуальными пространствами venv. Создаем собственные модули.
Предыдущий урок
Урок 4. Работа со строками
Следующий урок
Урок 6. Принципы ООП. Классы, объекты, поля и методы. Уровни доступа.
ТЕОРЕТИЧЕСКИЙ БЛОК
В КОНЦЕ УРОКА ЕСТЬ ВИДЕО
Модуль (Module) в Python
Программы на Python содержат тысячи, десятки тысяч и сотни тысяч строк кода (есть проекты с миллионами). В таких условиях одним файлом с кодом не обойдёшься — его нужно разбивать на части. И с целью получения доступа к коду, который находится в других файлах, в Python реализован механизм модулей.
Что такое модуль в терминологии Python? Официальная документация дает следующее определение:

Module — an object that serves as an organizational unit of Python code. Modules have a namespace containing arbitrary Python objects. Modules are loaded into Python by the process of importing.
Иными словами, модуль(module) в Python — это просто файл, содержащий код на Python. Каждый модуль может содержать переменные, классы и функции. Кроме того, в модуле может находиться исполняемый код. Имя модуля соответствует имени файла. Например:
# Имя файла math.py # Имя модуля mathКаждая программа может импортировать модуль и получить доступ к его классам, функциям и объектам. Нужно заметить, что модуль может быть написан не только на Python(обычные модули), а например, на C или C++(модули расширения).
- Имеет расширение *.py (имя файла без расширения является именем модуля).
- Может быть импортирован.
- Может быть многократно использован.
- Позволяет вам логически организовать ваш код на Python.

Пакет (Package) в Python
Идем дальше. Если начать делить код достаточно большого проекта на модули, то довольно быстро может возникнуть желание сгруппировать несколько близких по тематике модулей. Или же мы захотим вынести часть модулей из проекта, чтобы их можно было использовать в других проектах. И тут нам на помощь приходят пакеты(packages) в Python, которые служат для объединения модулей в группы.
Вот что на эту тему говорит документация Python:

Package — a Python module which can contain submodules or recursively, subpackages.
Пакет — это набор взаимосвязанных модулей(при этом стоит уточнить, что сам пакет тоже является модулем), предназначенных для решения задач определенного класса некоторой предметной области. Это такой способ структуризации модулей. Пакет представляет собой папку, в которой содержатся модули и другие пакеты и обязательный файл __init__.py , отвечающий за инициализацию пакета.
На самом деле
Некоторые пакеты Python не содержат файл __init__.py . Это так называемые namespace package s, которые служат просто как контейнеры подпакетов. Однако мы не станем на них подробно останавливаться, просто будем иметь ввиду, что такие пакеты существуют. Подробнее можно почитать в PEP 420.Пример содержимого каталога стандартного пакета json , который, как можно заметить, состоит из 4 модулей и файла __init__.py :
json/ ├── __init__.py ├── decoder.py ├── encoder.py ├── scanner.py └── tool.py- Именем пакета является название данного каталога.
- С версии Python 3.3 любая папка (даже без __init__.py ) считается пакетом.
- Пакет может быть импортирован(так же как и модуль).
- Пакет может быть многократно использован(так же как и модуль).

Классификация модулей
- Стандартная библиотека Python (англ. Standard Library).
- Сторонние модули (англ. 3rd Party Modules)
- Пользовательские модули

Python. Классификация модулей.
Поговорим о каждой из групп немного подробнее — расскажем, где найти модули в каждом случае, и приведем примеры самых популярных и полезных из них.
1. Стандартная библиотека Python- Встроенные модули. Входят в состав интерпретатора и написаны на языке С, что позволяет им обеспечивать эффективный доступ к функциональности на уровне ОС — например, к системе ввода-вывода данных. Многие из встроенных модулей являются платформозависимыми. Например, модуль winreg , предназначенный для работы с реестром ОС Windows, устанавливается только на соответствующей ОС.
- Модули расширения. Написаны на Python. Представляют собой стандартные способы решения наиболее часто встречающихся задач программирования. Сюда входят модули для работы со многими сетевыми протоколами и форматами интернета, регулярными выражениями, текстовыми кодировками, мультимедийными форматами, криптографическими протоколами, архивами, а также для сериализации данных, поддержки юнит-тестирования и др.
Библиотека;Описание
sys; Обеспечивает доступ к некоторым переменным и функциям, взаимодействующим с интерпретатором Python, например — доступ к аргументам командной строки, списку встроенных модулей Python, текущим исключениям, информации об операционной системе. os; Предоставляет множество функций для работы с операционной системой. Например, получение версии и другой информации о текущей ОС, работа с переменными окружения и файловой системой. os.path; Является вложенным в модуль os(по сути os является пакетом), и реализует некоторые полезные функции для работы с файлами — доступ к характеристикам файла и манипуляции с путями. time, datetime; Данные модули предоставляют классы для обработки времени и даты разными способами. random; Предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности. collections;Предоставляет специализированные типы данных — счетчики, очереди, упорядоченные словари. json; Позволяет кодировать и декодировать данные в формате JSON. unittest; Предоставляет богатый набор инструментов для написания и запуска автоматизированных тестов. re;Модуль re используется для работы с регулярными выражениями. hashlib;Предназначен для шифрования строк. bz2, gzip, tarfile, zipfile;Данные модули созданы для архивации/распаковки данных в разных форматах.
2. Сторонние модули (англ. 3rd Party Modules)
Это модули и пакеты, которые не входят в дистрибутив Python и могут быть установлены из каталога пакетов Python с помощью пакетного менеджера (например, pip или easy_install ).PyPI (Python Package Index) — главный каталог библиотек на Python. Содержит более 200 000 пакетов.
Приведем несколько примеров популярных пакетов из каталога PyPI.
Библиотека;Описание
six;Библиотека совместимости Python 2 и 3. Содержит функции, сглаживающие различия в версиях Python. urllib3;HTTP клиент для Python requests;HTTP клиент для Python. Технически является более удобной оберткой над urllib3. python-dateutil; Расширяет функционал по работе со временем и датой относительно модуля datetime из Стандартной библиотеки Python. docutils;Библиотека-процессор для документов написанных с помощью разметки ReST. pyyaml;YAML парсер/генератор awscli;Предоставляет интерфейс командной строки для Amazon Web Services numpy;Пакет для вычислений с многомерными массивами. Его можно рассматривать как свободную альтернативу MATLAB. pytest;Библиотека для создания и запуска автоматизированных unit тестов(альтернатива unittest) flask;Фреймворк для создания веб-приложений на Python
3. Пользовательские (собственные) модули
Python предоставляет возможность создания собственных модулей. Для создания таких модулей нет особенных правил — любой файл с расширением *.py является модулем, а создается, как правило, разработчиком для собственных нужд. В подавляющем большинстве случае такой пакет или модуль не размещается в каталоге пакетов Python.