Библиотека Python — это набор готового кода (модулей), который вы подключаете через import и вызываете из своей программы, чтобы не писать с нуля HTTP-запросы, разбор таблиц или графики. Ниже — десять библиотек, которые чаще всего встречаются в вакансиях и учебных проектах, таблица «задача — что установить — как импортировать», один сквозной пример на четырех из них и разбор типовых ошибок установки.
Содержание
- Библиотека, модуль, пакет, фреймворк: в чем разница
- 10 библиотек: таблица задач и установки
- Как выбрать под задачу
- Установка: сначала виртуальное окружение
- Пример 1: requests — запрос к API
- Пример 2: HTML -> таблица -> статистика -> график
- Пример 3: pytest проверяет функцию parse
- Типовая ошибка: имя в pip не равно имени в import
- Если не получилось
- Безопасность при работе с библиотеками
- Выводы
- Где применяется / связь с практикой
- FAQ
Примеры проверены 23.09.2026 на Python 3.14.6 в виртуальном окружении.
Библиотека, модуль, пакет, фреймворк: в чем разница
Эти слова часто смешивают, а от них зависит, что писать в pip install и что в import.
- Модуль — один файл
.pyили скомпилированное расширение, которое можно импортировать. - Пакет в коде — каталог с модулями (
bs4,sklearn). Пакет на PyPI (дистрибутив) — то, что скачивает pip (beautifulsoup4,scikit-learn). Имена могут не совпадать. - Библиотека — набор модулей под задачу; ваш код сам решает, когда ее вызвать.
- Фреймворк — наоборот, сам вызывает ваш код по своим правилам (Django, FastAPI): вы пишете обработчики, а он решает, когда их запустить.
Отдельно стоит стандартная библиотека — модули, которые идут вместе с интерпретатором: json, sqlite3, asyncio, tkinter, pathlib. Их не нужно ставить через pip. Поэтому в список ниже не вошли asyncio и tkinter: они полезны, но уже есть у вас в Python (tkinter в некоторых сборках Linux ставится отдельным системным пакетом).
10 библиотек: таблица задач и установки
| Библиотека | Для чего | pip install | import |
|---|---|---|---|
| requests | HTTP-запросы к сайтам и API | requests |
import requests |
| NumPy | массивы и быстрые вычисления | numpy |
import numpy as np |
| pandas | таблицы, CSV и Excel, группировки | pandas |
import pandas as pd |
| Matplotlib | графики и диаграммы | matplotlib |
import matplotlib.pyplot as plt |
| FastAPI | веб-API с проверкой типов | fastapi |
from fastapi import FastAPI |
| Django | полный веб-фреймворк: ORM, админка, шаблоны | django |
import django |
| pytest | автотесты | pytest |
запуск командой pytest |
| SQLAlchemy | работа с реляционными БД из Python | sqlalchemy |
import sqlalchemy |
| BeautifulSoup | разбор HTML и XML | beautifulsoup4 |
from bs4 import BeautifulSoup |
| Pillow | обработка изображений | pillow |
from PIL import Image |
| scikit-learn | классическое машинное обучение | scikit-learn |
import sklearn |
FastAPI и Django стоят в одной категории «веб», поэтому строк одиннадцать: выбирают обычно одно из двух. Три строки с отличающимися именами (beautifulsoup4 -> bs4, pillow -> PIL, scikit-learn -> sklearn) — частая причина ошибок у новичков.
Как выбрать под задачу
| Задача | Что взять | Когда иначе |
|---|---|---|
| Получить данные с сайта или API | requests | много параллельных запросов в async-коде — httpx или aiohttp |
| Посчитать и сгруппировать таблицу | pandas (внутри на NumPy) | данные не помещаются в память — чтение по частям или колоночные движки вроде Polars и DuckDB |
| Построить график в отчет | Matplotlib | нужен интерактив в браузере — Plotly или Bokeh |
| Сделать API | FastAPI | нужен сайт с админкой и авторизацией из коробки — Django |
| Вытащить данные из HTML | BeautifulSoup | обход тысяч страниц — Scrapy; страница строится JavaScript — браузерная автоматизация |
| Обучить модель на табличных данных | scikit-learn | нейросети — PyTorch или Keras |
Установка: сначала виртуальное окружение
Ставить библиотеки лучше не в системный Python, а в виртуальное окружение проекта. В свежих Debian, Ubuntu и Python от Homebrew системный pip вообще откажет с ошибкой externally-managed-environment (механизм PEP 668).
python3 -m venv .venv
source .venv/bin/activate # в Windows: .venv\Scripts\activate
python -m pip install requests beautifulsoup4 pandas matplotlib pytest
python -m pip freeze > requirements.txt
Команда python -m pip гарантирует, что пакеты попадут в тот же интерпретатор, которым вы потом запускаете код. Файл requirements.txt фиксирует версии, чтобы проект собрался так же у коллеги и на сервере.
Пример 1: requests — запрос к API
import requests
try:
resp = requests.get(
"https://httpbin.org/get",
params={"q": "python"},
timeout=10,
)
resp.raise_for_status()
except requests.RequestException as exc:
print("Ошибка запроса:", exc)
else:
data = resp.json()
print(resp.status_code, data["args"])
В консоли появится:
200 {'q': 'python'}
Что здесь важно. params сам кодирует параметры в URL — склеивать строку руками не нужно. timeout=10 обязателен: по умолчанию у requests таймаута нет, и при зависшем сервере программа будет ждать бесконечно. raise_for_status() превращает ответы 4xx и 5xx в исключение, иначе ошибка сервера пройдет молча.
Пример 2: HTML -> таблица -> статистика -> график
Один законченный скрипт на четырех библиотеках: BeautifulSoup разбирает HTML, pandas собирает таблицу, NumPy считает, Matplotlib сохраняет график. HTML задан строкой, чтобы пример работал без сети.
from bs4 import BeautifulSoup
import numpy as np
import pandas as pd
import matplotlib
matplotlib.use("Agg") # рисуем в файл, без окна
import matplotlib.pyplot as plt
HTML = """
<table id="courses">
<tr><td>Python Basic</td><td>4</td><td>120</td></tr>
<tr><td>Python Pro</td><td>5</td><td>80</td></tr>
<tr><td>ML Basic</td><td>5</td><td>95</td></tr>
</table>
"""
def parse(html: str) -> pd.DataFrame:
soup = BeautifulSoup(html, "html.parser")
rows = []
for tr in soup.select("#courses tr"):
name, months, students = (td.get_text(strip=True) for td in tr.find_all("td"))
rows.append({"course": name, "months": int(months), "students": int(students)})
return pd.DataFrame(rows)
df = parse(HTML)
print(df)
print("Среднее студентов:", np.mean(df["students"]).round(1))
ax = df.plot.bar(x="course", y="students", legend=False)
ax.set_ylabel("Студентов")
plt.tight_layout()
plt.savefig("students.png")
print("График сохранен в students.png")
Сохраните как report.py и запустите python report.py:
course months students
0 Python Basic 4 120
1 Python Pro 5 80
2 ML Basic 5 95
Среднее студентов: 98.3
График сохранен в students.png
Рядом появится файл students.png со столбчатой диаграммой. Строка matplotlib.use("Agg") делает поведение предсказуемым и на сервере без экрана: график пишется в файл, окно не открывается; на своем компьютере вместо savefig можно вызвать plt.show(). Данные в таблице учебные.
Пример 3: pytest проверяет функцию parse
from report import parse
def test_parse_counts_rows():
df = parse("<table id='courses'><tr><td>A</td><td>1</td><td>10</td></tr></table>")
assert len(df) == 1
assert df.loc[0, "students"] == 10
def test_parse_empty_table():
df = parse("<table id='courses'></table>")
assert df.empty
Файл test_report.py в той же папке, запуск python -m pytest -q:
.. [100%]
2 passed in 0.41s
pytest сам находит файлы test_*.py и функции test_*, а обычный assert превращает в понятный отчет при падении. Время выполнения у вас будет другим. Упрощение этого примера: при import выполняется весь report.py, включая печать и сохранение графика; в реальном проекте код запуска прячут под if __name__ == "__main__":.
Типовая ошибка: имя в pip не равно имени в import
Неверно:
import beautifulsoup4
Результат:
ModuleNotFoundError: No module named 'beautifulsoup4'
Исправление — импортировать пакет по его имени в коде: from bs4 import BeautifulSoup. То же с Pillow: ставится pillow, а импорт from PIL import Image; import pillow даст ModuleNotFoundError: No module named 'pillow'.
Если не получилось
| Симптом | Причина | Что делать |
|---|---|---|
No module named 'bs4', хотя pip install прошел |
пакет установлен в другой интерпретатор | ставить через python -m pip, проверить python -c "import sys; print(sys.executable)" |
externally-managed-environment |
системный Python защищен от pip | создать venv и ставить в него |
| программа зависает на requests | нет timeout |
передавать timeout= в каждый запрос |
| график не появляется на сервере | нет графической среды | matplotlib.use("Agg") и savefig |
| код из старой статьи падает | библиотека сменила API между версиями | сверить версию pip show <пакет> с документацией |
Безопасность при работе с библиотеками
Сторонний пакет исполняет код с правами вашей программы, поэтому несколько правил стоит соблюдать с первого проекта. Точно проверяйте имя пакета перед установкой: на PyPI встречаются подделки с похожими именами. Фиксируйте версии в requirements.txt или lock-файле и обновляйте их осознанно.
В requests не отключайте проверку сертификата (verify=False) ради «чтобы заработало» — это открывает подмену ответа. При парсинге сайтов соблюдайте условия сайта и не собирайте персональные данные без оснований. Сохраненные модели scikit-learn (через joblib или pickle) загружайте только из доверенного источника: загрузка такого файла может выполнить произвольный код.
Выводы
- Библиотеку вызывает ваш код, фреймворк вызывает ваш код сам; модули стандартной библиотеки (asyncio, tkinter, json) ставить не нужно.
- Десять самых ходовых сторонних библиотек закрывают основные задачи: HTTP, вычисления, таблицы, графики, веб, тесты, БД, парсинг HTML, изображения и ML.
- Имя в
pip installи вimportможет отличаться:beautifulsoup4->bs4,pillow->PIL,scikit-learn->sklearn. - Ставить пакеты в виртуальное окружение через
python -m pipи фиксировать версии. - У сетевых запросов всегда задавать
timeout, проверку сертификатов не отключать, чужие pickle-файлы не загружать.
Где применяется / связь с практикой
Освойте тему на практике
Из этих библиотек складывается большая часть учебных и рабочих проектов на Python: скрипт, который забирает данные по API, чистит их в pandas и строит отчет, или небольшой сервис на FastAPI с тестами на pytest. Чтобы уверенно собирать такие проекты, сначала нужен прочный фундамент языка: типы, функции, классы, исключения, работа с пакетами и окружениями. Его системно дает курс Python Basic.
Освойте тему на практике
Попробовать формат и задать вопросы преподавателям можно на бесплатных открытых уроках.
FAQ
Чем NumPy отличается от pandas?
NumPy работает с однотипными массивами чисел и быстрыми операциями над ними. pandas строится поверх NumPy и добавляет таблицы с подписанными колонками, разными типами данных, чтением CSV и группировками.
Нужен ли Six в 2026 году?
Для нового кода нет: Six решал совместимость Python 2 и 3, а Python 2 не поддерживается с 2020 года. Он может встретиться только как зависимость старых проектов.
Как узнать, какая версия библиотеки установлена?
Команда python -m pip show <пакет> или в коде print(<модуль>.__version__) для библиотек, которые публикуют этот атрибут (requests, numpy, pandas).



