Введение
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, чтобы улучшить свои навыки.