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

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

пробовал с командой ниже

$ pip install --upgrade -r requirements.txt

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

редактировать

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

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

$ pip-review --auto

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

5 ответов


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

пример:

lxml>=2.2.0

это обновит lxml до любой версии более новой, чем 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, который также обновляет версии в вашем для выбранных пакетов (или всех пакеты.)

установка

pip install pip-upgrader

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

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

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

pip-upgrade

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

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

pip-upgrade path/to/requirements.txt

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

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

Если вам нужно обновить до версии pre-release / post-release, добавьте --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()

затем установите libs из нового файла 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;