Как я могу обновить определенные пакеты с помощью 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