Создание, импорт и установка пакетов в Python

Пакеты в Python: создание, импорт и установка через менеджер пакетов pip

Пакет — каталог, который содержит модули и обязательный файл __init__.py, который инициализирует этот пакет.

Название этого каталога и является именем пакета.

Пакеты импортируются точно так же, как и модули.

Пример пакета:

mypocket/
|-- __init__.py
|-- hello.py
|-- max_a_b.py

Создание своего пакета в Python

Давайте создадим пакет с модулями, как в примере выше. Для этого:

  • создадим файл с основной программой с названием main.py (в этот файл будем импортировать наш пакет)
  • папку mypocket, рядом с файлом main.py
  • в папке mypocket создадим 2 файла, которые будут модулями нашего пакета — hello.py и max_a_b.py
  • и в папке mypocket создадим файл __init__.py для инициализации пакета.

В модуле hello.py напишем функцию hello_world, которая выводит приветствие:

def hello_world():
    print('Hello World')

В модуле max_a_b.py пусть будет функция, возвращающая максимальное число из двух полученных чисел:

def my_max(a, b):
    return a if(a > b) else b

Итак, наш пакет готов, можно двигаться дальше.

Импорт своего пакета

Импортировать наш пакет mypocket мы будем в файл main.py. Для этого в файле main.py пропишем:

import mypocket

print(dir(mypocket))

#['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']

С помощью import mypocket мы импортировали наш пакет, а с помощью print(dir(mypocket)) мы вывели объекты, которые импортировались с пакетом.

Но мы видим, что среди импортированных объектов нет наших модулей. А все из-за того, что модули из пакета необходимо импортировать явно.

Синтаксис импортирования модуля из пакета:

import <имя пакета>.<имя модуля>

Импортируем и посмотрим результат:

import mypocket.hello
import mypocket.max_a_b

print(dir(mypocket))

#['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'hello', 'max_a_b']

Теперь мы видим, что наши модули hello и max_a_b импортировались.

Обратимся к функциям из модулей этого пакета. Для этого пишем <имя пакета>.<имя модуля>.<функция>:

import mypocket.hello
import mypocket.max_a_b

mypocket.hello.hello_world()
print(mypocket.max_a_b.my_max(1, 5))

#Hello World
#5

Все отработало, как нужно.

Также можно импортировать функции модулей из пакета через from и обращаться к ним напрямую:

from mypocket.hello import hello_world
from mypocket.max_a_b import my_max

hello_world()
print(my_max(1, 5))

#Hello World
#5

Или задать им псевдонимы:

from mypocket.hello import hello_world as h_w
from mypocket.max_a_b import my_max as my_m

h_w()
print(my_m(1, 5))

#Hello World
#5

Список модулей для импорта

С помощью файла __init__.py мы можем указать, какой список модулей мы можем импортировать через from <имя_пакета> import *.

В файле __init__.py пропишем:

__all__ = ['hello', 'max_a_b']

Это значит, что мы хотим импортировать оба модуля.

И теперь мы можем импортировать их следующим образом:

from mypocket import *

hello.hello_world()
print(max_a_b.my_max(1, 5))

#Hello World
#5

Установка пакетов с помощью менеджера пакетов PIP

Помимо стандартных модулей и пакетов, а также пакетов созданных своими руками, есть огромное количество пакетов от сторонних разработчиков, которые тоже можно использовать в своих проектах.

Python Package Index (PyPI)

Все эти пакеты собраны на одном ресурсе — Python Package Index (PyPI).

pip

На этом сайте вы можете найти нужные вам пакеты через поиск, либо через классификатор.

Здесь мы разберемся, как устанавливать сторонние пакеты в ОС Windows.

Установка происходит с помощью менеджера пакетов pip.

Менеджер пакетов pip

Если вы работаете в PyCharm, то устанавливать пакеты можно прямо в нем, во вкладке «Terminal»:

terminal

Также для установки можно воспользоваться командным окном (нажимаем Win+R и набираем команду cmd):

cmd

Обычно pip устанавливается вместе с установкой Python, для того, чтобы проверить, что pip установлен, выполните в командном окне или терминале команду pip, если у вас установлен менеджер пакетов, вы увидите примерно следующее:

Usage:
  pip <command> [options]

Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  check                       Verify installed packages have compatible dependencies.
  config                      Manage local and global configuration.
  search                      Search PyPI for packages.
  cache                       Inspect and manage pip's wheel cache.
  wheel                       Build wheels from your requirements.
  hash                        Compute hashes of package archives.
  completion                  A helper command used for command completion.
  debug                       Show information useful for debugging.
  help                        Show help for commands.

General Options:
  -h, --help                  Show help.
  --isolated                  Run pip in an isolated mode, ignoring environment variables and user configuration.
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output. Option is additive, and can be used up to 3 times (corresponding to WARNING, ERROR, and CRITICAL logging levels).
  --log <path>                Path to a verbose appending log.
  --no-input                  Disable prompting for input.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --retries <retries>         Maximum number of retries each connection should attempt (default 5 times).
  --timeout <sec>             Set the socket timeout (default 15 seconds).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
  --trusted-host <hostname>   Mark this host or host:port pair as trusted, even though it does not have valid or any HTTPS.
  --cert <path>               Path to PEM-encoded CA certificate bundle. If provided, overrides the default. See 'SSL Certificate Verification' in pip documentation for more information.
  --client-cert <path>        Path to SSL client certificate, a single file containing the private key and the certificate in PEM format.
  --cache-dir <dir>           Store the cache data in <dir>.
  --no-cache-dir              Disable the cache.
  --disable-pip-version-check
                              Don't periodically check PyPI to determine whether a new version of pip is available for download. Implied with --no-index.
  --no-color                  Suppress colored output.
  --no-python-version-warning
                              Silence deprecation warnings for upcoming unsupported Pythons.
  --use-feature <feature>     Enable new functionality, that may be backward incompatible.
  --use-deprecated <feature>  Enable deprecated functionality, that will be removed in the future.

Т.е. вы получите список команд и операторов для работы с менеджером пакетов.

Для того, чтобы узнать, какие пакеты у вас уже установлены выполните команду pip freeze:

freeze

Вы увидите, установленные пакеты вместе с их версиями.

Установка пакета через pip

Для того, чтобы установить пакет нужно воспользоваться командой:

pip install <имя пакета или модуля>

Например, если выполнить команду pip install flask, то будет установлен фреймворк flask последней версии.

Основные команды pip

Рассмотрим самые основные команды:

pip install package-name — устанавливает последнюю версию пакета;
pip install package-name==2.4.6 — устанавливает пакет версии 2.4.6;
pip install package-name --upgrade — обновляет версию пакета;
pip download — скачивает пакеты;
pip uninstall — удаляет пакеты;
pip freeze — выводит список установленных пакетов для записи в requirements.txt;
pip list — выводит список установленных пакетов;
pip list --outdated — выводит список устаревших пакетов;
pip show — показывает информацию об установленном пакете;
pip check — проверяет установленные пакеты на совместимость зависимостей;
pip search — по введенному названию, ищет пакеты, опубликованные в PyPI;
pip wheel — собирает wheel-архив по вашим требованиям и зависимостям;
pip hash — вычисляет хеши архивов пакетов;
pip completion — вспомогательная команда используется для завершения основной команды;
pip help — помощь по командам.

Чтобы узнать обо всех командах — выполните команду pip, а чтобы узнать информацию, о какой то конкретной команде воспользуйтесь командой pip help <command>, например pip help install.

Содержание: