#Руководства
- 11 апр 2019
-
16
Знания расширяют сознание, а библиотеки — возможности языков программирования. Расскажем, как подключить их в Python.
vlada_maestro / shutterstock
Автор в сфере IT, digital, экономики и финансов. Ведёт некоммерческий проект для начинающих писателей «ЛитЦех».
Мы уже рассказывали, как установить Python на различные операционные системы. Если хотите расширить возможности языка, используйте менеджер пакетов — именно с ним подключают библиотеки и модули. А если стоит вопрос, как научиться программировать на Python и получить работу, записывайтесь на курс «Python-разработчик».
В этом способе не нужен традиционный установщик пакетов pip — модуль подключается прямо из источника. Это удобно, когда у вас несколько версий Python и нужно импортировать модуль в разные. Рекомендуем научиться делать это сразу.
Для этого скачайте файл с PyPI и извлеките его в системе.
Поменяйте каталог на папку с файлом setup.
Если Python расположен вне пути вашей системы, она выдаст ошибку, что команда не найдена. Тогда укажите путь вручную. Для Windows это выглядит так:
c:python34python.exe setup.py install
Название говорит само за себя — способ легкий, буквально в два клика. Если устанавливали вручную, то на компьютере уже стоит setuptools, и вы сможете использовать easy install, что лежит в папке со скриптами Python.
Если добавить папку со скриптами в путь операционной системы, вы сможете вызвать easy install через командную строку без указания полного адреса.
Теперь выполните следующее:
easy_install package_name
И автоматически установите любой необходимый пакет. Однако есть ограничения:
- Он может попробовать запустить пакет, который еще не загрузился до конца.
- С помощью easy install нельзя провести деинсталляцию.
Из-за этих и других причин в сообществе языка Python придумали и реализовали программу pip.
Она появилась в Python 3.4 и скачивается вместе с самим языком, но если у вас более ранняя версия, то установите pip вручную:
- Зайдите в PyPI и скачайте скрипт get-pip.py.
- Затем выполните команду:
Установятся setuptools, если ранее его не было на компьютере, и сам pip. С его помощью подключают любые библиотеки и файлы — всё, что только может установить easy install. Но теперь для этого будет использоваться иная команда:
А для обновления пакета применяйте:
pip install -U PackageName
Учись бесплатно:
вебинары по программированию, маркетингу и дизайну.
Участвовать
Школа дронов для всех
Учим программировать беспилотники и управлять ими.
Узнать больше
A module is simply a file containing Python code. Functions, groups, and variables can all be described in a module. Runnable code can also be used in a module. A module can be imported by multiple programs for their application, hence a single code can be used by multiple programs to get done with their functionalities faster and reliably.
If the pip is not installed then refer to the article:
- How to install PIP in Linux?
- How to install pip in macOS ?
- How to install pip in Windows?
Installing Python modules on Windows
Output version should be equal to or greater than the 19 version, If not use the following command to update pip:
pip install --upgrade pip wheel
Output:
To install the pip package use the following command to install the required package:
pip install <packagename>
To upgrade the packages that are already installed, use the following command:
pip install --upgrade <packagename>
To uninstall a package that is already installed, use the following command:
pip uninstall <packagename>
To install the packages from the other resources, use the following command :
pip install -e git+<https://github.com/myrepo.git#egg=packagename>
Installing Python modules on Unix/macOS
Make sure that you have pip installed. Type the below command in your terminal to verify if the pip is installed or not.
python3 -m pip --version
To update the installed pip and setup tools copies use the following command:
python -m pip install --upgrade pip setuptools wheel
Type the below command to install the module using pip.
python3 -m pip install "ModuleName"
To install the specific version of the module use the following command:
python3 -m pip install "ModuleName==2.2"
To install the version of a module in between any two numbers:
python3 -m pip install "ProjectName>=2,<3"
To install a specific compatible version of full length:
python3 -m pip install "ModuleName~=2.2.3"
To upgrade the project version use the following command:
python3 -m pip install --upgrade ModuleName
To install a required module that is in the text document:
python3 -m pip install -r requirements.txt
To install the directories that are present in the local system using the following command:
python3 -m pip install --no-index --find-links=file:///local/dir/ ProjectName python3 -m pip install --no-index --find-links=/local/dir/ ProjectName python3 -m pip install --no-index --find-links=relative/dir/ProjectName
Manual installation of Python packages
The majority of Python packages are now designed to work with pip. If you have a kit that isn’t compatible, you’ll have to install it manually.
Install the kit by downloading it and then extracting it to a local directory. If the kit has its own set of installation instructions, obey them, if the package is not present there then use the following command to install the package using the command manually:
python <FILE_NAME>.py install
A module is simply a file containing Python code. Functions, groups, and variables can all be described in a module. Runnable code can also be used in a module. A module can be imported by multiple programs for their application, hence a single code can be used by multiple programs to get done with their functionalities faster and reliably.
If the pip is not installed then refer to the article:
- How to install PIP in Linux?
- How to install pip in macOS ?
- How to install pip in Windows?
Installing Python modules on Windows
Output version should be equal to or greater than the 19 version, If not use the following command to update pip:
pip install --upgrade pip wheel
Output:
To install the pip package use the following command to install the required package:
pip install <packagename>
To upgrade the packages that are already installed, use the following command:
pip install --upgrade <packagename>
To uninstall a package that is already installed, use the following command:
pip uninstall <packagename>
To install the packages from the other resources, use the following command :
pip install -e git+<https://github.com/myrepo.git#egg=packagename>
Installing Python modules on Unix/macOS
Make sure that you have pip installed. Type the below command in your terminal to verify if the pip is installed or not.
python3 -m pip --version
To update the installed pip and setup tools copies use the following command:
python -m pip install --upgrade pip setuptools wheel
Type the below command to install the module using pip.
python3 -m pip install "ModuleName"
To install the specific version of the module use the following command:
python3 -m pip install "ModuleName==2.2"
To install the version of a module in between any two numbers:
python3 -m pip install "ProjectName>=2,<3"
To install a specific compatible version of full length:
python3 -m pip install "ModuleName~=2.2.3"
To upgrade the project version use the following command:
python3 -m pip install --upgrade ModuleName
To install a required module that is in the text document:
python3 -m pip install -r requirements.txt
To install the directories that are present in the local system using the following command:
python3 -m pip install --no-index --find-links=file:///local/dir/ ProjectName python3 -m pip install --no-index --find-links=/local/dir/ ProjectName python3 -m pip install --no-index --find-links=relative/dir/ProjectName
Manual installation of Python packages
The majority of Python packages are now designed to work with pip. If you have a kit that isn’t compatible, you’ll have to install it manually.
Install the kit by downloading it and then extracting it to a local directory. If the kit has its own set of installation instructions, obey them, if the package is not present there then use the following command to install the package using the command manually:
python <FILE_NAME>.py install
Когда вы в первый раз начинаете работу в качестве программиста в Python, вы, скорее всего, не задумываетесь о том, как именно вам нужно установить внешний пакет или модуль. Но когда эта нужда возникает, вам захочется сделать это как можно быстрее! Пакеты Python можно легко найти в интернете. Большая часть популярных пакетов может быть найдена в PyPI (Python Package Index). Также множество пакетов Python можно найти на github, и bitbucket, а также в Google Code. В данной статье мы рассмотрим следующие методы установки пакетов Python:
- Установка из источника
- easy_install
- pip
- Другие способы
Установка из источника
Это отличный навык, которому стоит научиться. Существуют более простые способы, которые мы рассмотрим позже в этой статье. Тем не менее, существует ряд пакетов, которые нужно установить именно этим способом. Например, чтобы использовать easy_install, вам сначала нужно установить setuptools. Чтобы сделать это, вам нужно скачать tar или zip файл с PyPI (https://pypi.python.org/pypi/setuptools), и извлечь его в вашей системе. Далее, обратите внимание на файл setup.py. Откройте сессию терминала и измените каталог на папку, содержащую файл setup. После этого запустите следующую команду:
Если Python не расположен в пути вашей системы, вы получите сообщение об ошибке, указывающее на то, что команда не была найдена, или приложение неизвестно. Вы также можете вызвать эту команду, применив весь путь к Python. Для пользователей Windows это выглядит так:
c:python34python.exe setup.py install |
Этот метод особенно удобен, если у вас несколько установленных версий Python и вам нужно установить пакет на разные версии. Все что вам нужно, это указать полный путь к конкретной версии Python и установить пакет. Некоторые пакеты содержат в себе С код, например, заглавные файлы С, которые должны быть скомпилированы под пакет для корректной установки. В случае с Linux, у вас должен быть установленный C/C++ компилятор, так что вы можете установить пакет без головной боли. Возвращаясь к Windows, вам нужна правильная версия Visual Studio, для корректной компиляции пакета. Некоторые люди упоминают также и MingW, который можно использовать для этих целей, но я не знаю, как сделать так, чтобы это работало. Если в пакете присутствует установщик Windows, используйте его. В таком случае вы можете забыть о компиляции в принципе.
Применение easy_install
После установки setuptools, вы можете использовать easy_install. Вы можете найти его в папке с установочными скриптами Python. Не забудьте добавить папку со скриптами в путь вашей системы, чтобы вы в дальнейшем смогли вызывать easy_install в командной строке, без указания его полного пути. Попробуйте выполнить запустить следующую команду, чтобы узнать больше об опциях easy_install:
Если вам нужно начать установку пакета при помощи easy_install, вам нужно сделать следующее:
easy_install package_name |
easy_install попытается скачать пакет с PyPI, скомпилировать его (если нужно) и установить его. Если вы зайдете в свою директорию site-packages, вы найдете файл под названием easy-install.pth, который содержит доступ ко всем пакетам, установленным через easy_install. Python использует этот файл, чтобы помочь в импорте модуля или пакета. Вы также можете указать easy_install на установку через URL или через путь на вашем компьютере. easy_install также может выполнить установку прямиком из файла tar. Вы можете использовать easy_install для обновления пакета, воспользовавшись функцией upgrade (или–U). И наконец, вы можете использовать easy_install для установки файла egg файлов. Вы можете найти эти файлы в PyPI, или в других источниках. Файлы egg – это особые zip файлы. На самом деле, если вы измените расширение на .zip, вы можете разархивировать файл egg.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Вот несколько примеров:
easy_install -U SQLAlchemy easy_install http://example.com/path/to/MyPackage-1.2.3.tgz easy_install /path/to/downloaded/package |
Существует несколько проблем с easy_install. Он может попробовать установить пакет, пока он еще загружается. При помощи easy_install нельзя деинсталлировать пакет. Вам придется удалить пакет вручную и обновить файл easy-install.pth, удалив доступ к пакету. По этой, и многим другим причинам, в сообществе Python создали pip.
Использование pip
Программа pip вышла вместе с Python 3.4. Если у вас старая версия Python, вам нужно установить pip вручную. Установка pip немного отличается от того, что мы обсуждали ранее. Вам нужно зайти в PyPI, но вместо того, чтобы скачать пакет и запустить его скрипт setup.py, вам предложат скачать один скрипт под названием get-pip.py. После этого, вам нужно будет выполнить его следующим образом:
Таким образом setuptools (или какая-либо альтернатива setuptools) будет установлена, если вы не сделали этого ранее. Также будет установлен и pip. Он работает с версиями CPython 2.6, 2.7, 3.1, 3.2, 3.3, 3.4 и с pypy. Вы можете использовать pip для установки всего, что может установить easy_install, но сам процесс несколько отличается. Чтобы установить пакет, выполните следующее:
А для обновления пакета, вам нужно сделать это:
pip install —U PackageName |
Вам может понадобиться вызвать –h, чтобы получить полный список всего, что pip может сделать. В отличие от easy_install, pip может устанавливать формат wheel. Формат wheel – это ZIP архив, с именем файла, имеющим особый формат, и расширением. Whl. Вы также можете установить wheel, при помощи его собственной командной строки. С другой стороны, pip не может выполнять установку файлов egg. Если вам нужно установить egg, вам придется воспользоваться easy_install.
Кое-что о зависимостях
Преимущества в использовании easy_install и pip в том, что если пакет имеет зависимости от скрипта setup.py, то и easy_install, и pip попытаются установить и скачать этот скрипт. Это поможет вам избежать головной боли в той ситуации, когда вы пробуете новый пакет, и еще не понимаете, что пакет A зависит от пакетов B, C и D. При помощи easy_install или pip, вам не нужно об этом беспокоиться вообще.
Подведем итоги
С этого момента, вы можете использовать любой пакет, который вам может понадобиться, конечно, если этот пакет поддерживается вашей версией Python. Существует множество инструментов, доступных программисту Python. Пока что пакеты – достаточно запутанная тема, тем не менее, вы знаете, как использовать необходимые инструменты, которые вы можете легко и быстро получить, для установки необходимого пакета.
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: vasile.buldumac@ati.utm.md
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»
Менеджер пакетов pip: разбираемся с установкой дополнительных библиотек в Python
Если вы работаете с языком программирования Python, то не раз сталкивались с утилитой pip. Общение с этим пакетом для большинства начинающих программистов ограничивается командой install. Однако возможности менеджера пакетов существенно шире.
1. Предназначение менеджера пакетов pip
Ведь не все пакеты нужны в повседневной практике или отдельном проекте, да и места они занимают не мало. Для этих целей создан удаленный репозиторий модулей https://pypi.org/, в котором на сегодня имеется более 260 тыс. проектов на все случаи практики программирования. Вам не обязательно создавать код с нуля, так как под многие задачи уже имеется соответствующий пакет.
Работа с этим хранилищем расширений осуществляется через команду pip. Имеется и другой установщик easy_install, но он применяется существенно реже. Таким образом, пакетный менеджер pip необходим для установки, обновления, удаления и управления модулями языка Python.
2. Подготовительные мероприятия
Чтобы пользоваться возможностями пакетного менеджера pip, его необходимо установить. Если версия вашего Python выше 3.4 или 2.7.9, то pip уже интегрирован в него. Использование более ранних версий языка не рекомендуется (вы теряете часть функционала). Другой способ установить pip (если вы его удалили случайно):
Проверить, что в вашем проекте или на ПК доступен pip, можно применяя следующую команду —version или -V:
pip 20.2.3 from c:usersmikappdatalocalprogramspythonpython38-32libsite-packagespip (python 3.8)
Как видно из ответа, на данном ПК используется python версии 3.8 и pip версии 20.2.3.
В некоторых случаях (актуально для пользователей Linux или macOS) требуется применять команду pip3 (если в результате выполнения pip определяет, что у вас установлен python версии 2 по умолчанию). Это связано с тем, что на *nix системах присутствуют сразу обе версии языка.
Также если на вашем компьютере имеется несколько версий языка Python (например, 3.6, 3.8, 3.9), то менеджер пакетов может применяться отдельно для каждой из них:
После установки менеджера пакетов и определения его версии не следует забывать об его обновления до последнего издания. Для windows систем:
> python -m pip install -U pip
В результате выполнения команды мы получим сообщение об успешном обновлении pip до последнего релиза или сведения о том, что у нас уже установлена последняя версия.
3. Установка и удаление пакетов
Наиболее часто используемая команда в менеджере пакетов связана с непосредственной установкой необходимых модулей. Для примера установим библиотеку NumPy (позволяет эффективно работать с многомерными массивами и включает ряд соответствующих математических функций).
После выполнения команды данный модуль добавится в вашу библиотеку со всеми необходимыми дополнениями. Важно отметить, что будет загружена последняя версия NumPy. Бывают случаи, когда для проекта используется определенная версия пакета. Чтобы ничего не «сбилось», требуется установить именно этот релиз либо версию, которая не ниже определенной. Для этого применяются следующие команды:
pip install numpy==1.16.1
pip install numpy>=1.17.0
Имеются и другие операторы (>, < и т.п.). Даже если пакет уже установлен и работает некорректно можно принудительно его переустановить.
pip install --force-reinstall numpy
При разработке сложных проектов может понадобиться установка большого количества модулей. Постоянно их скачивать из репозитория PyPi трудоемко. Для этого разработан способ загрузки пакетов локально. Они могут находиться в архивах (*.tar.gz) или специальных файлах с расширением .whl. Это удобно и в том случае, если нет доступа в интернет у выбранной машины, и вы заранее создали пакет со всеми необходимыми библиотеками.
Для примера запакуем модуль numpy в «колесо» (wheel) и установим его оттуда.
pip wheel --wheel-dir=. numpy
pip install --no-index --find-links=. numpy
Вначале мы создали специальный локальный пакет NumPy и поместили его в текущую папку (о чем свидетельствует точка). В директории создался файл numpy-1.19.2-cp38-cp38-win32.whl. На его основании даже без интернета мы легко сможем установить данную библиотеку. Команда «—no-index» говорит о том, чтобы мы не искали модуль в репозитории PyPi, а —find-links принудительно указывает место расположения пакета. Когда речь идет о сотне пакетов, это очень удобно. Правда для этого необходимо освоить еще один инструмент: набор зависимостей (о нем – следующий раздел).
Рассмотрим вопрос удаления модулей. Если требуется удалить один пакет, то делается это по аналогии с установкой:
Для удаления нескольких модулей их можно перечислить через пробел или воспользоваться файлом requirements.txt. Чтобы при стирании библиотек постоянно не запрашивалось подтверждение от пользователя («введите Y для удаления или N для отмены»), применяется ключ -y или —yes.
pip uninstall –y pycryptodomex pyzipper
pip uninstall –y –r requirements.txt
К слову, при установке нового пакета или его обновлении старая версия удаляется из библиотеки конкретного окружения.
Читайте также
4. Файлы требований для управления пакетами
Серьезные и многоуровневые приложения никогда не обходятся одной библиотекой. Даже когда вы устанавливали тот же NumPy, вы могли заметить, что помимо самого модуля скачивались дополнительные пакеты, которые мы не запрашивали. Естественно они необходимы для правильной работы NumPy. Но откуда известно, что они нужны?
Для таких целей придумали файл зависимостей, в котором перечислены все требуемые библиотеки для работы конкретного проекта. Он создается в любом удобном месте (обычно его называют requirements.txt) и используется для развертывания приложения в новом окружении.
pip freeze > requirements.txt
Если открыть содержимое текстового документа, то обнаружим все зависимости (небольшой фрагмент последнего показан ниже):
…
bleach==3.2.1
cached-property==1.5.2
certifi==2020.6.20
cffi==1.14.3
chardet==3.0.4
colorama==0.4.4
cycler==0.10.0
…
В созданном при помощи команды freeze файле показаны модули проекта и их версии. Этот файл можно править вручную для задания дополнительных ограничений. Так, для пакета colorama можем приписать особые требования:
colorama>=0.2.0, <= 0.4.4
Этим мы даем понять, что тестировали работоспособность приложения на версиях от 0.2 до 0.4.4 включительно. Другие версии могут вызвать ошибки. После создания файла requirements.txt его можно использовать для установки всех требуемых модулей, не прописывая огромный список вручную.
pip install -r requirements.txt
Менеджер пакетов «заглянет» внутрь и скачает все библиотеки для проекта.
Также рассмотрим более сложный пример. Предположим, что наше приложение может функционировать в питоне версий 2 и 3. Разумеется, каждая из этих версий требует своего набора модулей. В requirements.txt все это можно прописать:
…
cached-property==1.5.2
certifi==2020.6.20 ; python_version < ‘3.6’
cffi==1.14.3 ; python_version >= '3.6'
chardet==3.0.4
…
Так, если у пользователя на компьютере установлен Python 3.5, то модуль cffi устанавливаться не будет. Подобный подход несколько портит красоту зависимостей, что ведет в ряде случаев к созданию дополнительного файла constraints.txt со списком ограничений. Он нужен для того, чтобы избегать установок лишних модулей в многоуровневых приложениях.
Приведем пример. Для работы нашего приложения требуются некоторые
модули определенных версий. Перечислим их в файле requirements.txt.
Django==3.1.2
django-allauth==0.32.0
Для данных библиотек имеются некоторые зависимости. В зависимости от того, на какой версии питона будет работать приложение, могут потребоваться разные модули. Так, python-openid работает только на питоне 2 версии, а python3-openid нужен для 3-ей версии. Все эти требования мы прописывает в requirements.txt, делая его нечитабельным и неудобным.
Django==3.1.2
django-allauth==0.32.0
oauthlib==3.1.0
python-openid==2.2.5 ; python_version < '3.0'
python3-openid==3.2.0; python_version >= '3.0'
Намного разумнее — создать constraints.txt, в котором прописываются дополнительные зависимости, а в файле requirements.txt перечислить основные библиотеки. Когда основные модули начнут подтягивать дополнительные, то они смогут понять, какие же версии им потребуются. Файлы примут такой вид:
Django==3.1.2
django-allauth==0.32.0
oauthlib==3.1.0
python-openid==2.2.5
python3-openid==3.2.0
Для установки всех требуемых модулей и их зависимостей применяется команда:
pip install -c constraints.txt
На практике constraints.txt используется лишь в крупных проектах, а для небольших разработок можно обойтись простым перечислением зависимостей.
Задачи по теме
Рассматриваем модули и пакеты из стандартной библиотеки Python и PyPI. Учимся использовать инструкции import и from..import и различать абсолютный и относительный импорт. Разбираемся с виртуальными пространствами venv. Создаем собственные модули.
Импорт библиотек в Python. Различие модулей и пакетов, причины их использования. Актуальные вопросы для проверки понимания темы и задание для самостоятельной практики.
5. Дополнительные команды pip
Наберем в командной строке
Перед нами предстанет перечень доступных команд в менеджере пакетов. По каждой команде также можно получить справочную информацию:
Команд и дополнительных ключей в pip имеется предостаточное количество. Ознакомиться с ними можно на сайте документации. Мы же рассмотрим основные команды и покажем их применение.
5.1. Команда download
Позволяет скачивать модули в указанную директорию для дальнейшего их использования локально (без повторного скачивания с репозитория).
# Устанавливаем модуль в текущую папку (получим файл с расширением «.whl»)
pip download numpy
# Загружаем NumPy в поддиректорию /mods/ (если ее нет, то она создастся)
pip download --destination-directory ./mods/ numpy
# В текущую папку скачаются все пакеты, указанные в файле зависимостей
pip download --destination-directory . –r requirements.txt
# Пример использования дополнительных команд (скачиваем библиотеку только для Линукс-систем и питона не ниже 3 версии)
pip download --platform linux_x86_64 --python-version 3 numpy
5.2. Команда list
Команда list позволяет просматривать все имеющиеся в виртуальном окружении или глобально модули с указанием их версий.
# Отображаем список всех установленных модулей
> pip list
Package Version
---------- -------
numpy 1.19.0
pip 20.2.4
setuptools 50.3.2
# Отображаем список всех установленных модулей в формате json
> pip list --format json
[{"name": "numpy", "version": "1.19.0"}, {"name": "pip", "version": "20.2.4"}, {"name": "setuptools", "version": "50.3.2"}]
# Перечисляем модули, которые имеются в системе, но не связаны с другими (в ряде случаев таким способом можно выяснить модули, которые вам не нужны либо еще не используемые в проекте)
> pip list --not-required
Package Version
---------- -------
numpy 1.19.0
# Выводим перечень библиотек, которые требуют обновления (для них вышла более новая версия)
> pip list –o
Package Version Latest Type
------- ------- ------ -----
numpy 1.19.0 1.19.2 wheel
5.3. Команда show
Показывает информацию о конкретном модуле или их группе.
# Вывод информации о библиотеке: версия, автор, описание, расположение, зависимости и т.д.
> pip show numpy
Name: numpy
Version: 1.19.0
Summary: NumPy is the fundamental package for array computing with Python.
Home-page: https://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: None
License: BSD
...
# Самые полные сведения о модуле
> pip show --verbose numpy
…
Metadata-Version: 2.1
Installer: pip
Classifiers:
Development Status :: 5 - Production/Stable
Intended Audience :: Science/Research
...
5.4. Команда check
Нужна для проверки зависимостей, нехватки модулей или их неверной версии.
> pip check
No broken requirements found.
Если будут найдены ошибки, то выведется соответствующая информация.
5.5. Команда search
Дает возможность осуществлять поиск пакетов из командной строки.
> pip search numpy
numpy (1.19.2) - NumPy is the fundamental package for array computing with Python.
INSTALLED: 1.19.0
LATEST: 1.19.2
numpy-cloud (0.0.5) - Numpy in the cloud
numpy-alignments (0.0.2) - Numpy Alignments
numpy-utils (0.1.6) - NumPy utilities.
...
Показанный выше запрос выводит несколько десятков результатов. В их названии или описании имеется слово numpy. Поиск не так удобен, как через сайт репозитория, но иногда может быть полезен.
5.6. Команда hash
Вычисляет хеш локального модуля на основании определенного алгоритма (можно выбирать).
> pip hash numpy-1.19.2-cp38-cp38-win32.whl
numpy-1.19.2-cp38-cp38-win32.whl:--hash=sha256:51ee93e1fac3fe08ef54ff1c7f329db64d8a9c5557e6c8e908be9497ac76374b
Может понадобиться для проверки полноты скачивания модуля.
5.7. Команда cache
Предоставляет сведения о кеше менеджера пакетов и позволяет оперировать им.
# Очистка кеша и удаление всех whl-файлов
> pip cache purge
# Показать папку с кеш-файлами менеджера пакетов
> pip cache dir
c:usersmmmappdatalocalpipcache
# Узнать размер, место расположения и количество файлов в директории кеша
> pip cache info
Location: c:usersmmmappdatalocalpipcachewheels
Size: 0 bytes
Number of wheels: 0
5.8. Команда debug
Отражает отладочную информацию: о версии пайтона, менеджера пакетов, модулях, операционной системе и т.п.
> pip debug
pip version: pip 20.2.4 from d:1tmpvenvlibsite-packagespip (python 3.8)
sys.version: 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)]
sys.executable: d:1tmpvenvscriptspython.exe
sys.getdefaultencoding: utf-8
...
Сведения могут понадобиться при ошибках и сбоях в работе модулей или установщика.
5.9. Команда completion
Команда актуальная для пользователей *nix систем, чтобы в оболочке bash получить возможность автодополнения команд. Другими словами, при нажатии TAB вы сможете набрать первые 1-2 буквы команды, а остальное определится системой.
$ pip completion --bash >> ~/.profile
Фактически, вы дополняете профиль командной оболочки командами менеджера пакетов.
5.10. Команда config
Управление файлом настроек пакета модулей (pip.ini). Нужно быть аккуратнее, чтобы ничего не сломать в работе питона. Вмешиваться в настройки может понадобиться в случаях наличия нескольких пользователей в вашей операционной системе и при потребности их разграничить в средах программирования.
> pip config list
# При вызове команды получаем содержимое файла pip.ini, который расположен либо в домашней директории, либо в папке виртуального окружения.
global.require-virtualenv='true'
global.user='false'
Зачастую при установке новых пакетов могут возникать ошибки доступа или ограниченных прав того или иного пользователя. Правильное конфигурирование pip позволяет избежать многих проблем.
Менеджер пакетов языка python обладает целым рядом полезных команд. Он позволяет не только устанавливать / удалять библиотеки из официального репозитория, локальных дисков и папок, но и дает возможности организации управления модулями и их версиями при работе над проектами.
Как вам материал?
Читайте также
На чтение 12 мин Просмотров 4.4к. Опубликовано 07.02.2022
В своей работе программист обязан «разделять сущности» когда в коде нарастает сложность. Чаще всего это означает, что какой-то блок кода разбивают на более мелкие блоки, таки как функции, классы, методы класса… Но что делать, если самих этих блоков кода уже так много, что само их количество создаёт сложность? Приходится «повышать уровень абстракции» — разделять код на несколько файлов. В этом уроке мы научимся использовать несколько таких файлов как целостный код. Одной из важных характеристик языка программирования является то, как в нём устроен этот механизм. Что ж, Python как обычно предоставляет удобный механизм, представляющий собой систему импортов файлов.
Давайте договоримся о терминах: любой файл с кодом на Питоне может использоваться в другом файле Питона и называется в таком случае модулем или библиотекой. Кстати, Python так же может использовать файлы на C или C++.
Давайте разбираться!
Содержание
- Подключение модуля из стандартной библиотеки
- Ошибки
- Инструкция from
- Создание своего модуля на Python
- Именование модулей
- Куда поместить модуль?
- Пакеты
Подключение модуля из стандартной библиотеки
Стандартная библиотека – это набор наиболее распространённых и используемых модулей, которые поставляются вместе с языком Пайтон. Другими словами, когда Вы устанавливаете язык на свой компьютер, этот набор идёт в комплекте.
Для того, чтоб получить доступ к какому-то модулю из стандартной библиотеки достаточно написать в коде ключевое слово import Python, вот так:
Эта строка импортирует из стандартной библиотеки модуль sys.
print(sys)
print(type(sys))
# Вывод:
<module 'sys' (built-in)>
<class 'module'>
На самом деле, при импорте c Python import создаётся переменная sys, которая хранит ссылку на файл:
import sys
print('sys', sys)
print('type(sys)', type(sys))
os = sys
sys = 1
print('sys', sys)
print('type(sys)', type(sys))
print('os', os)
print('type(os)', type(os))
# Вывод:
sys <module 'sys' (built-in)>
type(sys) <class 'module'>
sys 1
type(sys) <class 'int'>
os <module 'sys' (built-in)>
type(os) <class 'module'>
Модуль sys помогает взаимодействовать с системой Вашего компьютера. Теперь можно использовать объекты и функции из этой библиотеки в своём коде. Делается это при помощи синтаксиса: «модуль.атрибут». К примеру, узнать, какой тип операционной системы используется:
import sys
print(sys.platform)
# Вывод:
win32
После ключевого слова import можно указать не одну, а несколько Python modules (библиотек). Однако, так делать не стоит, поскольку от этого ухудшается читаемость кода:
import sys, pprint
pprint.pprint(sys.platform)
# Вывод:
'win32'
Важно знать, что при import module код из модуля сразу же исполняется. К примеру, если импортировать следующий код:
def foo():
print("foo")
print("bar")
то в терминале появится:
Надпись foo не появилась, так как функция пока нигде не вызывалась. Если сделать так:
def foo():
print("foo")
print("bar")
foo()
то в терминал будет выведено:
То, что код начинает выполняться сразу, сделано для того, чтоб можно было произвести инициализацию модуля, то есть подготовить его каким-то образом перед использованием. К примеру, запустить сервер или заполнить переменные значениями. Если у Вас есть код, который должен выполняться, когда Вы запускаете скрипт, но не должен, когда Вы импортируете этот скрипт, используйте стандартный приём:
def foo():
print("foo")
if __name__ == '__main__':
print("bar")
foo()
Теперь код будет исполняться так, как описано выше.
Ошибки
Если попытаться использовать что-то, чего нет в модуле, интерпретатор вернёт исключение AttributeError:
import sys
print(sys.wrong_argument)
# Вывод:
Traceback (most recent call last):
File "C:UsersivandAppDataRoamingJetBrainsPyCharm2021.2scratchesscratch.py", line 4, in <module>
print(sys.wrong_argument)
AttributeError: module 'sys' has no attribute 'wrong_argument'
Process finished with exit code 1
Если попытаться импортировать не существующий модуль, Вы увидите исключение ModuleNotFoundError:
import wrong_module
# Вывод:
Traceback (most recent call last):
File "C:UsersivandAppDataRoamingJetBrainsPyCharm2021.2scratchesscratch.py", line 1, in <module>
import wrong_module
ModuleNotFoundError: No module named 'wrong_module'
Process finished with exit code 1
Использование псевдонимов
Распространённой практикой является использование коротких псевдонимов для длинных названий импортируемого модуля. Для этого существует специальное слово as.
import itertools as iter
print(iter)
# Вывод:
<module 'itertools' (built-in)>
На самом деле as – лишь «синтаксический сахар», ведь происходит здесь то же самое, что мы проделали чуть раньше: замена переменной, хранящей ссылку на модуль.
import itertools as iter
import itertools
it = itertools
print(it is iter)
# Вывод:
True
Инструкция from
Зачастую не требуется весь модуль, а лишь какая-то его часть. Вы ведь не покупаете чайную лавку целиком, когда вам нужна одна упаковка чая?
В Python есть ключевое слово from, которое позволяет импортировать только нужные части. Простейший случай использования выглядит так:
Это импортирует все сущности из модуля и теперь к ним можно обращаться так, будто они объявлены в текущем файле:
from sys import *
print(platform)
# Вывод:
win32
Но такой вариант является максимально плохим! Почему? Всё дело в пространстве имён. Если пользоваться этим способом, пространство имён выходит из-под Вашего контроля – теперь Вы не знаете какие имена переменных, функций, классов используются в Вашей программе, из-за чего могут возникнуть неприятности. В конце концов, Вы же не собираетесь, не глядя купить всё, что есть в чайной лавке?
Для того, чтоб импортировать только определённые сущности, укажите их имена после ключевого слова import (можно несколько).
from sys import platform
print(platform)
# Вывод:
win32
И здесь тоже можно использовать псевдонимы.
from sys import platform as pl
print(pl)
# Вывод:
win32
Создание своего модуля на Python
Как уже говорилось выше, любой код на Python является модулем, так что создавать модули очень просто. К примеру, создадим файл hello.py:
def say():
print("Hello!")
Теперь в той же директории создадим файл talk.py, в который будем импортировать функцию say:
from hello import say
say()
# Вывод:
Hello!
Да, всё так просто!
А как установить модуль, написанный кем-то другим? Используйте pip instal.
Именование модулей
Здесь есть ограничения. Самое важное – нельзя именовать модуль ключевым словом самого Пайтона (к примеру, pass или for), иначе его просто не получится импортировать. Так же не стоит использовать идентификаторы Питона (к примеру, class или type). Получить полный список зарезервированных слов и идентификаторов можно при помощи следующего кода:
print(help("keywords"))
# Вывод:
Here is a list of the Python keywords. Enter any keyword to get more help.
False break for not
None class from or
True continue global pass
__peg_parser__ def if raise
and del import return
as elif in try
assert else is while
async except lambda with
await finally nonlocal yield
None
Кроме того, не желательно давать модулю такое же имя, как у модулей встроенной библиотеки, либо какого-либо из распространённых сторонних модулей – это вносит не нужную неоднозначность.
Куда поместить модуль?
Туда, где его потом можно будет найти. Пути поиска модулей указаны в переменной sys.path. В него включены текущая директория (то есть модуль можно оставить в папке с основной программой), а также директории, в которых установлен python. Кроме того, переменную sys.path можно изменять вручную, что позволяет положить модуль в любое удобное для вас место (главное, не забыть в главной программе модифицировать sys.path).
Пакеты
Что же делать, если Ваш проект разрастается и модулей уже очень много? Пайтон предлагает элегантное решение: почему бы не использовать уже существующую в операционной системе иерархию – директории (папки)? В Питоне это называется пакеты.
Пакет в Python — директория с обязательным модулем __init__.py. Остальное содержимое может включать в себя и модули, и другие пакеты.
__init__.py – файл, который выполняется сразу после импорта пакета и предназначен для инициализации – предварительной подготовки перед использованием содержимого пакета. Этот механизм аналогичен тому, как выполняется основной поток кода при импорте модуля.
Если пакет не содержит __init__.py, то он превращается в так называемое «пространство имён» — может содержать другие пакеты, но не может содержать модули на первом уровне.