Что делать, если Pipenv не удается заблокировать

Автор: Эдвард Крюгер и Дуглас Франклин.

Эта статья - одна из многих, посвященных управлению пакетами Python и средой с помощью Pipenv. Здесь вы узнаете, как устранить проблемы с установкой и блокировкой Pipenv. Для получения дополнительной информации о Pipenv или средах ознакомьтесь с этой статьей среднего размера!

Что такое Пипенв?

Pipenv объединяет управление пакетами и управление виртуальной средой в один инструмент для установки, удаления, отслеживания и документирования ваших зависимостей; а также для создания, использования и управления вашими виртуальными средами. Pipenv - это, по сути, pip и virtualenv, объединенные в единый продукт.

Когда вы начинаете проект с Pipenv, инструмент автоматически создает виртуальную среду, Pipfile и Pipfile.lock. Pipfile очень похож на файл requirements.txt. Когда вы устанавливаете пакет с pipenv install, Pipfile автоматически обновляется с учетом новой зависимости.

Проблема с блокировкой: Pipfile содержит ссылку на несуществующий пакет

Pipfile не блокируется при попытке установить несуществующие пакеты, например, при опечатках.

Например:

pipenv install panadas

Pipenv ищет указанный вами пакет независимо от того, существует он или нет. Вы видите следующие и многие другие ошибки в терминале, когда пакет не существует или не может быть найден по другой причине. А пока мы сосредоточимся на этих двух.

Ошибка блокировки! Обратите внимание, что в пакеты Pipfile добавлены «панады». Эта опечатка будет проблемой, потому что теперь наш Pipfile содержит ошибку, и любой, кто использует этот Pipfile, столкнется с ошибками блокировки и зависимостей. Имейте в виду, что предупреждение «Установка завершена» не соответствует действительности; Панад для установки нет. Все, что произошло, - это добавление «панад» в Pipfile. Опечатки в Pipfile - самая частая причина сбоя блокировки.

Пока эта опечатка остается в Pipfile, установка существующего или несуществующего пакета приводит к сбою блокировки. Вам нужно будет исправить Pipfile в текстовом редакторе. Я использую нано. Вы можете использовать любой удобный вам редактор; Sublime, VS Code, Atom и т. Д. Просто исправьте Panadas на Pandas, затем pipenv install.

Теперь давайте посмотрим на некоторые другие сообщения об ошибках, которые появляются в консоли при сбое блокировки.

Обратите внимание на предложение pipenv install --skip-lock. Его следует использовать только в экстремальных или причинно-следственных обстоятельствах программирования, поскольку он обходит основную цель Pipfile .lock; блокировка версий пакета и создание формулы для установки зависимостей среды.

Управление Pip-файлами: указание версий

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

pipenv install --pre

После этой команды в вашем Pipfile появится новая переменная allow_prereleases = true. Обратите внимание, что это позволит установить любой предварительный пакет в вашей среде. Теперь, когда полезно закреплять определенные версии пакетов. Закрепление версий - отличная привычка, которая может предотвратить проблемы с зависимостями в будущем.

Обратите внимание на изображение Pipfile выше в разделе «Требуется»; вы видите python_version = 3.7. Pipfile указывает здесь версию Python.

Чтобы создать Pipfile или среду с определенной версией Python, используйте следующий синтаксис.

pipenv --python 3

При необходимости также можно указать версии пакета.

pipenv install django=1.11.10

Заключение

С помощью Pipenv и Pipfile вы представляете другим стандартизированный способ установки зависимостей проекта и требований к тестированию и разработке. Любой, у кого есть копия вашего Pipfile, может воссоздать вашу среду с помощью следующей команды.

pipenv install

Это создает среду, указанную в Pipfile. Убедитесь, что Pipfile не содержит опечаток и указывает правильный пакет и версии Python, прежде чем делиться им!

Если это не то решение pipenv, которое вы искали, ознакомьтесь с этой статьей Medium, чтобы получить помощь по другим ошибкам Pipenv!