Как я могу обновить определенные пакеты с помощью pip и файла требований?

Я использую pip с файлом требований, в virtualenv, для моих проектов Django. Я пытаюсь обновить некоторые пакеты, особенно Django, и я получаю сообщение об ошибках исходного кода:

Source in `<virtualenv`>/build/Django has version 1.2.3 that conflicts with Django==1.2.4 (from -r requirements/apps.txt (line 3))

Это после обновления номера версии Django от 1.2.3 до 1.2.4 в моем файле требований. Я использую эту команду для фактического обновления:

pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>

Я не могу найти флаг, который запускает повторную загрузку всего пакета. Я даже попробовал запустить команду удаления, а затем установить, но не кубик. Может, я что-то упустил?

Ответ 1

Я не уверен, что это именно ваша проблема, но в моем случае я не смог обновить Django до 1.2.4 - я всегда заканчивал версию 1.2.3, поэтому я удалил Django с помощью

<virtualenv>/bin/pip uninstall Django

Затем я удалил каталог <virtualenv>/build/Django и, наконец, я установил правильную версию с помощью:

<virtualenv>/bin/pip install Django

Надеюсь, это поможет.

Ответ 2

Я выполнил следующую команду и обновил ее с 1.2.3 до 1.4.0

pip install Django --upgrade

Ярлык для обновления:

pip install Django -U

Примечание: если пакет, который вы обновляете, имеет какие-либо требования, эта команда дополнительно обновит все требования к последним версиям. В последних версиях pip вы можете предотвратить это поведение, указав --upgrade-strategy only-if-needed. С этим флагом зависимости не будут обновляться, если установленные версии зависимых пакетов больше не удовлетворяют требованиям обновленного пакета.

Ответ 3

в соответствии с примером

pip install --upgrade django

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

Предположим, что вы хотите обновить somepackage, для которого требуется django >= 1.2.4, используя этот метод, он также обновит somepackage AND django до новейшего обновления. Просто, чтобы быть в безопасности:

# assume you want to keep django 1.2.4
pip install --upgrade somepackage django==1.2.4

Выполнение этого будет обновлено somepackage и будет поддерживать django в версии 1.2.4

Ответ 4

Команда ярлыка для --upgrade:

pip install Django --upgrade

Есть:

pip install Django -U

Ответ 5

Если вы обновите пакет, старый будет удален.

Удобный способ сделать это, чтобы использовать этот пип-Upgrader который также обновляет версии в вашем 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 к вашей команде.

Полное раскрытие: я написал этот пакет. Надеюсь, поможет.

Ответ 6

Если вы хотите обновить только один пакет с именем somepackage, команда, которую вы должны использовать в последних версиях pip,

pip install --upgrade --upgrade-strategy only-if-needed somepackage

Это очень полезно, если вы разработали приложение в django, которое в настоящее время будет работать только с определенной версией django (скажем, Django = 1.9.x) и захочет обновить некоторые зависимые пакеты с помощью функции исправления ошибок/новой функции и Обновленный пакет зависит от django (но работает с любой версией django после 1.5). Поведение pip install --upgrade django-some-package по умолчанию будет состоять в том, чтобы обновить django до последней доступной версии, которая в противном случае могла бы разорвать ваше приложение, хотя при необходимости пакеты --upgrade-strategy only-if-needed будут обновляться только по мере необходимости.

Ответ 7

Как правило, pip очищается после себя и удаляет содержимое каталога сборки. Единственный раз, когда он этого не делает, является:

  • Вы использовали опцию --no-install
  • Вы используете редактируемые пакеты
  • Установка была отменена или была прервана.

Во всех остальных случаях у вас не должно быть директории build, которая забивает вашу среду.

Ответ 8

это решило для меня проблему "pip install -I --upgrade psutil --force", после чего просто удалите psutil с новой версией и надеемся, что вы можете внезапно установить старую версию (:

Ответ 9

Я использую это:

pip3 install -r  requirements.txt