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