Обновление пакетов python из файла требований .txt с помощью команды pip
Как обновить все мои пакеты python из файла requirements.txt с помощью команды pip?
попытался выполнить команду
$ pip install --upgrade -r requirements.txt
Так как пакеты python имеют номер версии (Django==1.5.1
), они, похоже, не обновляются. Есть ли лучший подход, чем вручную редактировать файл требований .txt?
ИЗМЕНИТЬ
Как отметил Энди в своем ответе, пакеты привязаны к определенной версии, поэтому обновление пакетов через команду pip невозможно.
Но мы можем достичь этого с помощью pip-tools
, используя следующую команду.
$ pip-review --auto
это автоматически обновит все пакеты с помощью требования. txt (обязательно установите pip-tools
с помощью команды установки пакета).
Ответы
Ответ 1
Нет. Ваш файл требований был прикреплен к определенным версиям. Если ваши требования настроены на эту версию, вы не должны пытаться обновить эти версии. Если вам требуется , вам необходимо переключиться на версии без ограничений в файле требований.
Пример:
lxml>=2.2.0
Это приведет к обновлению lxml до любой версии выше версии 2.2.0
lxml>=2.2.0,<2.3.0
Это обновит lxml до самой последней версии между 2.2.0 и 2.3.0.
Ответ 2
вы можете попробовать:
pip install --upgrade --force-reinstall -r requirements.txt
Вы также можете игнорировать установленный пакет и установить новый:
pip install -I, --ignore-installed -r requirements.txt
Ответ 3
Я уже ответил на этот вопрос здесь. Здесь мое решение:
Поскольку не было простого способа обновления пакета за пакетом и обновления файла requirements.txt, я написал этот pip-updrader, который также обновляет версии в вашем requirements.txt
файле для выбранных пакетов (или всех пакетов).
Установка
pip install pip-upgrader
Использование
Активируйте свой virtualenv (важно, потому что он также установит новые версии обновленных пакетов в текущем virtualenv).
cd
в каталог проекта, затем запустите:
pip-upgrade
Расширенное использование
Если требования помещаются в нестандартное местоположение, отправьте их в качестве аргументов:
pip-upgrade path/to/requirements.txt
Если вы уже знаете, какой пакет вы хотите обновить, просто отправьте их как аргументы:
pip-upgrade -p django -p celery -p dateutil
Если вам нужно обновить версию до релиза/пост-релиза, добавьте аргумент --prerelease
в свою команду.
Полное раскрытие: я написал этот пакет.
Ответ 4
Поскольку я не мог этого сделать с помощью 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
Ответ 5
Следующие шаги помогли мне:
pip install --upgrade -r requirements.txt
пип версия: 18.1
Ответ 6
Полезной утилитой является https://pypi.org/project/pur/
использование
Предоставьте pur ваш файл needs.txt, и он обновит все ваши пакеты до последних версий.
Например, с учетом файла require.txt:
flask==0.9
sqlalchemy==0.9.10
alembic==0.8.4
Запуск pur для этого файла обновляет пакеты до текущих последних версий:
$ pur -r requirements.txt
Updated flask: 0.9 -> 1.0.2
Updated sqlalchemy: 0.9.10 -> 1.2.8
Updated alembic: 0.8.4 -> 0.9.9
All requirements up-to-date.
Pur никогда не изменяет вашу среду или установленные пакеты, он только изменяет ваш файл needs.txt.
Ответ 7
Я редактирую файл требований .txt, как показано ниже, и запускаю $sh./requirements.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;