Что делать, если 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!