Pipenv install не устанавливает все из Pipfile

Я запускаю это на новой установке Ubuntu 20.04:

pipenv install с помощью Pipfile:

$ cat Pipfile
[packages]
Django = "*"
django-split-settings = "*"
python-dotenv = "*"
django-compressor = "*"
django-libsass = "*"
Brotli = "*"
django-htmlmin = "*"
gunicorn = "*"
dj-database-url = "*"
wagtail = "*"
wagtail-metadata = "*"
wagtail-blocks = "*"
psycopg2 = "*"
django-tz-detect = "*"
wagtailcodeblock = "*"
django-taggit = "*"
django-taggit-templatetags2 = "*"
django-fontawesome-5 = "*"
django-debug-toolbar = "*"
wagtail-robots = "*"
wand = "*"

[dev-packages]
pylint = "*"
django-debug-toolbar = "*"

[requires]
python_version = "3.7"

[packages.whitenoise]
extras = [ "brotli",]

[packages.django-storages]
extras = [ "dropbox",]

затем запускается:

$ pipenv run pip list
Package         Version
--------------- -------
django-storages 1.9.1
pip             20.2.2
setuptools      49.6.0
wheel           0.35.1
whitenoise      5.2.0

по какой-то причине он устанавливает только whitenoise и django-хранилища, как я могу это исправить?

Дополнительная информация:

$ which python
/home/maks/.local/share/virtualenvs/personal-website-lhNGB4ub/bin/python

$ which pip
/home/maks/.local/share/virtualenvs/personal-website-lhNGB4ub/bin/pip

$ pyenv which python
/home/maks/.pyenv/versions/3.7.8/bin/python

Эта проблема возникла недавно после разработки на Windows в течение некоторого времени, когда это случилось, я переключился на использование только файла requirements.txt вместо этого, но теперь я хочу вернуться к использованию pipenv.

насколько я могу судить, это не проблема с кодировкой файла или окончанием строк, и я не уверен, когда и почему именно это началось.

РЕДАКТИРОВАТЬ: запуск pipenv install django установит django правильно, но pipfile и pipfile.lock останутся идентичными, что означает, что это не проблема с Pipfile


person Maksymilian Mozolewski    schedule 22.08.2020    source источник


Ответы (3)


ИСПРАВЛЕНИЕ: Итак, что сработало, так это удаление pipfile и ручная повторная установка каждого пакета с pipenv install, это привело к немного иному виду pipfile, судя по тому, что вызвало у меня эту проблему, было обновлением самого pipenv ... Смотреть:

старый файл Pipfile:

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[requires]
python_version = "3.7"

[packages]
Django = "*"
django-split-settings = "*"
python-dotenv = "*"
django-compressor = "*"
django-libsass = "*"
Brotli = "*"
django-htmlmin = "*"
dj-database-url = "*"
wagtail = "*"
wagtail-metadata = "*"
wagtail-blocks = "*"
psycopg2 = "*"
django-tz-detect = "*"
wagtailcodeblock = "*"
django-taggit = "*"
django-taggit-templatetags2 = "*"
django-fontawesome-5 = "*"
django-debug-toolbar = "*"
wagtail-robots = "*"
wand = "*"
gunicorn = "*"

[dev-packages]
pylint = "*"
django-debug-toolbar = "*"

[packages.whitenoise]
extras = [ "brotli",]

[packages.django-storages]
extras = [ "dropbox",]

после ручной переустановки каждого пакета в новой среде:

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
pylint = "*"
django-debug-toolbar = "*"

[packages]
django = "*"
django-split-settings = "*"
python-dotenv = "*"
django-compressor = "*"
django-libsass = "*"
brotli = "*"
django-htmlmin = "*"
dj-database-url = "*"
wagtail = "*"
wagtail-metadata = "*"
wagtail-blocks = "*"
django-tz-detect = "*"
wagtailcodeblock = "*"
django-taggit = "*"
django-taggit-templatetags2 = "*"
django-fontawesome-5 = "*"
django-debug-toolbar = "*"
wagtail-robots = "*"
wand = "*"
whitenoise = {extras = ["brotli"], version = "*"}
django-storages = {extras = ["dropbox"], version = "*"}
gunicorn = "*"

[requires]
python_version = "3.7"

Установка из этого pip-файла с использованием pipenv install прошла нормально, и все пакеты были установлены.

Я не совсем уверен, почему все это произошло, возможно, это ошибка в pipenv, или, может быть, нет обратной совместимости. Если кто-нибудь знает, дайте мне знать.

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

[packages.whitenoise]
extras = [ "brotli",]

и конвертируем их в этот формат:

whitenoise = {extras = ["brotli"], version = "*"}

после этого запустите pipenv install, и все ваши зависимости будут установлены правильно

Я отправил проблему в репозиторий Pipenv: https://github.com/pypa/pipenv/issues/4433

person Maksymilian Mozolewski    schedule 23.08.2020

setuptools, pip и wheel являются частью пакета python и предустановлены. Просто держите их в актуальном состоянии до последней версии.

person Prakhar Gurunani    schedule 22.08.2020
comment
Это не ответ на вопрос. Я не устанавливал их вручную через Pipenv. - person Maksymilian Mozolewski; 23.08.2020

Единственная закономерность, которую я здесь вижу, заключается в том, что whitenoise и django-storerages не входят в число лучших [пакетов]. Может быть, просто чтобы приблизиться к источнику проблемы, попробуйте взять пакет, например gunicorn, пропустить его вниз и сделать что-то вроде этого:

`[packages.gunicorn]
 extras = [ "",]`

Кроме того, PythonPATH работает немного странно в Windows, убедитесь, что это не проблема при переключении. Возможно, взгляните на свою собственную установку Python, если пакеты появились там, а не в вашем env :)

person Arjaan Auinger    schedule 22.08.2020
comment
Привет, спасибо за помощь. Добавление таких пакетов приводит к их установке, но, очевидно, я хочу, чтобы мои обычные пакеты устанавливались правильно. Я также разработал это на Ubuntu, прежде чем временно переключился на Windows. Я только что недавно установил pyenv, а затем Python 3.7.8 и pipenv, я установил его через pip, и я не вижу, чтобы установка могла пойти не так, хотя я не знаю, как это проверить. - person Maksymilian Mozolewski; 23.08.2020
comment
Я запускаю следующее: `(personal-website) $ python -m site ... '/home/maks/.local/share/virtualenvs/personal-website-lhNGB4ub/lib/python3.7/site-packages',. .. $ python -m site ... '/home/maks/.pyenv/versions/3.7.8/lib/python3.7/site-packages', ... $ ls cd /home/maks/.pyenv/ версии / 3.7.8 / lib / python3.7 / site-packages / `и` ls /home/maks/.local/share/virtualenvs/personal-website-lhNGB4ub/lib/python3.7/site-packages/ `и не мог видеть пакеты ни в одном из пакетов сайта - person Maksymilian Mozolewski; 23.08.2020
comment
Я тоже не могу найти пакеты в системном Python, они просто не устанавливаются, как будто pipenv их не видит. - person Maksymilian Mozolewski; 23.08.2020