Модули от третьих сторон

Beginner

This tutorial is from open-source community. Access the source code

Введение

Python имеет большой библиотеку встроенных модулей (включая все необходимое).

Еще больше есть сторонних модулей. Проверьте их в Python Package Index или PyPi. Или просто сделайте поиск в Google по конкретной теме.

Как обрабатывать зависимости от сторонних библиотек - это постоянно развивающаяся тема в Python. В этом разделе лишь освещаются основы, чтобы помочь вам понять, как это работает.

Путь поиска модулей

sys.path - это директория, которая содержит список всех директорий, которые проверяются при выполнении инструкции import. Посмотрите на него:

>>> import sys
>>> sys.path
... посмотрите на результат...
>>>

Если вы пытаетесь импортировать что-то, и оно не находится в одной из этих директорий, вы получите исключение ImportError.

Стандартные библиотеки Python

Модули из стандартной библиотеки Python обычно находятся в директориях, таких как /usr/local/lib/python3.6. Вы можете убедиться в этом, выполнив простой тест:

>>> import re
>>> re
<module're' from '/usr/local/lib/python3.6/re.py'>
>>>

Простой просмотр модуля в интерактивном режиме является полезным советом по отладке. Это покажет вам расположение файла.

Модули от третьих сторон

Модули от третьих сторон обычно находятся в специальной директории site-packages. Вы увидите ее, если выполните те же шаги, что и выше:

>>> import numpy
>>> numpy
<module 'numpy' from '/usr/local/lib/python3.6/site-packages/numpy/__init__.py'>
>>>

Опять-таки, просмотр модуля - хороший совет по отладке, если вы пытаетесь понять, почему что-то, связанное с import, не работает как ожидается.

Установка модулей

Наиболее распространенный способ установки модуля от третьей стороны - использовать pip. Например:

$ python3 -m pip install packagename

Эта команда загрузит пакет и установит его в директорию site-packages.

Проблемы

  • Возможно, вы используете установку Python, над которой не имеете прямого контроля.
    • Корпоративно одобренная установка
    • Вы используете версию Python, которая входит в состав операционной системы.
  • Возможно, у вас нет разрешения на установку глобальных пакетов на компьютере.
  • Возможно, существуют другие зависимости.

Виртуальные окружения

Одним из распространенных решений проблем с установкой пакетов является создание для себя так называемого "виртуального окружения". Естественно, нет единственного способа сделать это - на самом деле есть несколько конкурирующих инструментов и техник. Однако, если вы используете стандартную установку Python, вы можете попробовать ввести следующее:

$ sudo apt install python3-venv
$ python -m venv mypython
bash %

После нескольких минут ожидания у вас будет новая директория mypython, которая представляет собой свою небольшую установку Python. Внутри этой директории вы найдете директорию bin/ (для Unix) или Scripts/ (для Windows). Если вы запустите скрипт activate, найденный там, он "активирует" эту версию Python, сделав ее по умолчанию командой python для оболочки. Например:

$ source mypython/bin/activate
(mypython) bash %

Отсюда вы можете теперь начать устанавливать для себя пакеты Python. Например:

(mypython) $ python -m pip install pandas

...

Для целей экспериментирования и проверки различных пакетов виртуальное окружение обычно будет работать нормально. С другой стороны, если вы создаете приложение и оно имеет определенные зависимости от пакетов, это - несколько другая проблема.

Управление зависимостями от третьих сторон в вашем приложении

Если вы написали приложение и оно имеет определенные зависимости от третьих сторон, одна из проблем - это создание и сохранение среды, которая включает в себя ваш код и зависимости. К сожалению, это一直是 Python 整个发展历程中非常混乱且变化频繁的领域。即使现在它仍在不断发展。

Вместо того чтобы давать информацию, которая скоро устареет, я направляю вас к Руководству пользователя по пакетному управлению в Python.

Упражнение 9.4: Создание виртуального окружения

Попробуйте повторить шаги по созданию виртуального окружения и установке в него pandas, как показано выше.

Резюме

Поздравляем! Вы завершили лабораторную работу по модулям от третьих сторон. Вы можете практиковаться в более лабораторных работах в LabEx, чтобы улучшить свои навыки.