pipenv install psycopg2> = 2.7 --no-binary psycopg2 - PullRequest
0 голосов
/ 28 июня 2019

Я использовал pipenv во время разработки, однако в prod мне нужно использовать pips requirements.txt

Я включаю дамп pipenv в файл require.txt с помощью команды:

   $ pipenv lock -r > requirements-new.txt;

Все хорошо, пока мне не нужно psycopg2>=2.7 --no-binary psycopg2, чтобы появиться в моих файлах require.txt.

Как мне настроить pipenv, чтобы указать --no-binary для дампа в файл needs.txt?

Я пытался (но это не работает):

export PIP_NO_BINARY=:psycopg2: && pipenv install psycopg2==2.7

В качестве временной меры я использую:

    pipenv lock -r > requirements-new.txt;
    PSYCOPG_VERSION=$(sed -n -e 's/^.*psycopg2-binary==//p' requirements-new.txt);
    sed -i "s|psycopg2-binary==$PSYCOPG_VERSION|psycopg2==$PSYCOPG_VERSION --no-binary psycopg2|" requirements-new.txt;

но должен быть лучший способ?

1 Ответ

0 голосов
/ 15 июля 2019

pipenv учитывает любую переменную PIP и, следовательно, поддерживает большинство параметров pip через PIP_.

Я думаю, что ваша ошибка - указывать двоеточия вокруг psycopg2. Двоеточие требуется для специальных значений, таких как:: any: и none: none. Для обычных пакетов просто перечислите их имена через запятую.

От: https://pip.pypa.io/en/stable/reference/pip_install/#cmdoption-no-binary

- без двоичного кода

Не используйте бинарные пакеты. Может быть предоставлено несколько раз, и каждый раз добавляет к существующему значению. Принимает либо: все: отключить все двоичные пакеты,: нет: очистить набор или одно или несколько имен пакетов с запятыми между ними. Заметка что некоторые пакеты сложны для компиляции и могут быть не в состоянии установить, когда эта опция используется на них.

...