Обновление пакетов python из требований.txt с помощью команды pip


Как обновить все мои пакеты python из требований.txt-файл с помощью команды pip?

пробовал С ниже команды

$ pip install --upgrade -r requirements.txt

поскольку пакеты python имеют суффикс с номером версии (Django==1.5.1) они, похоже, не обновляются. Есть ли лучший подход, чем ручное редактирование требований.файл txt?

EDIT

как Энди упомянул в своем ответе пакеты привязаны к конкретной версии, следовательно, это не так возможно обновление пакетов с помощью команды pip.

но мы можем добиться этого с pip-tools С помощью следующей команды.

$ pip-review --auto

это автоматически обновит все пакеты из требований.тхт (убедитесь, что для установки pip-tools С помощью команды pip install).

5 53

5 ответов:

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

пример:

lxml>=2.2.0

это обновить этот пакет содержит файлы для любых версия новее, чем 2.2.0

lxml>=2.2.0,<2.3.0

это позволит обновить lxml до самой последней версии между 2.2.0 и 2.3.0.

можно попробовать:

pip install --upgrade --force-reinstall -r requirements.txt

вы также можете игнорировать установленный пакет и установить новый:

pip install -I, --ignore-installed -r requirements.txt

Я уже ответил на этот вопрос здесь. Вот мое решение:

потому что не было простого способа обновления пакета за пакетом и обновления требований.txt файл, я написал это pip-upgrader, который также обновляет версии в вашем requirements.txt file для выбранных пакетов (или всех пакеты.)

установка

pip install pip-upgrader

использование

активируйте virtualenv (важно, потому что он также будет устанавливать новые версии обновленных пакетов в текущем virtualenv).

cd в каталог проекта, а затем запустите:

pip-upgrade

дополнительные функции

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

pip-upgrade path/to/requirements.txt

если вы уже знаете, какой пакет вы хотите обновить, просто отправьте их в качестве аргументов:

pip-upgrade -p django -p celery -p dateutil

если вам нужно обновить до предрелизной / пострелизной версии, добавьте --prerelease аргумент для вашей команды.

полное раскрытие: я написал этот пакет.

Так как я не мог сделать это с помощью bash, я написал модуль python, чтобы создать новый файл требований без версий и использовать его:

data = open('requirements-prod.pip', 'r')
data2 = open('requirements-prod-no-version.pip', 'w')
for line in data.readlines():
    new_line = line[:line.index('==')]
    data2.write(new_line + '\n')
data2.flush()

затем установите библиотеки из нового файла pip install -U -r requirements-prod-no-version.pip

наконец заморозить версии в исходный файл pip freeze > requirements-prod.pip

Я изменить требования.txt, как показано ниже, и запустите $sh ./требования.txt

pip install -U amqp;
pip install -U appdirs;
pip install -U arrow;
pip install -U Babel;
pip install -U billiard;
pip install -U celery;
pip install -U Django;
pip install -U django-cors-headers;
pip install -U django-crispy-forms;
pip install -U django-filter;
pip install -U django-markdown-deux;
pip install -U django-pagedown;
pip install -U django-timezone-field;
pip install -U djangorestframework;
pip install -U fcm-django;
pip install -U flower;
pip install -U gunicorn;
pip install -U kombu;
pip install -U Markdown;
pip install -U markdown2;
pip install -U packaging;