Обновление пакетов 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;