Синхронизация pipenv и установка pipenv --system --ignore-pipfile в среде докера - PullRequest
0 голосов
/ 22 октября 2018

Согласно официальной документации pipenv :

sync

pipenv sync [ОПЦИИ]

Устанавливает всепакеты, указанные в Pipfile.lock.

install

pipenv install [ОПЦИИ] [ПАКЕТЫ] ...

Устанавливает предоставленные пакеты и добавляет их вPipfile, или (если пакеты не указаны), устанавливает все пакеты из Pipfile.

- ignore-pipfile Игнорировать Pipfile при установке, используя Pipfile.lock.

Is itМожно ли предположить, что pipenv sync и pipenv install --ignore-pipfile идентичны без каких-либо скрытых недостатков?

Дополнительные сведения : я использовал флаг --system для установки пакетов python в системутак как мне нет дела до изолированных сред в докере.Однако --system flag недоступен для pipenv sync (см. проблема github ), поэтому я подумал, что pipenv install --system --ignore-pipfile может быть приемлемым хаком.

Ответы [ 3 ]

0 голосов
/ 02 декабря 2018

Не уверен, был ли он добавлен после того, как вы опубликовали этот вопрос, но документация действительно отвечает на этот вопрос (хотя, если честно, для меня это своего рода объяснение типа "а?")...)

FWIW, я считаю, что sync также должен иметь флаг --system (я пытаюсь решить ту же проблему, что и вы, со сборкой контейнера, и не хочу поддерживать два отдельных файла: requirements.txt для системы Python контейнера и Pipfile для моего виртуального окружения dev).

Мне кажется, что ваш "хак" в настоящее время является единственно возможным вариантом.

0 голосов
/ 02 января 2019

вы можете увидеть заметки в Расширенное использование pipenv

pipenv install --ignore-pipfile почти эквивалентно pipenv sync, но pipenv sync никогда не будет пытаться повторно заблокироватьваши зависимости, как это считается атомарной операции.pipenv install по умолчанию пытается выполнить повторную блокировку, если не используется флаг --deploy.

, поэтому возможно pipenv install --ignore-pipfile --deploy равно pipenv sync

0 голосов
/ 23 ноября 2018

Не совсем ответ (я бы тоже заинтересовался подтверждением), но для того, чтобы он того стоил, мы использовали

pipenv install --system --deploy --ignore-pipfile

в нашем Dockerfile с хорошими результатами.

...