Обновление пакетов 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 ответов:
нет. Ваш файл требований был приперся для конкретных версий. Если ваши требования установлены на эту версию, вы не должны пытаться обновить эти версии. Если вы нужно для обновления, то вам нужно переключиться на незакрепленные версии в файле требований.
пример:
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.txtfile для выбранных пакетов (или всех пакеты.)установка
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;