Как обновить зависимость в проекте Python на Heroku - PullRequest
11 голосов
/ 27 февраля 2012

Для моего (Django) проекта на Heroku я обновил одну из зависимостей в моем файле needs.txt до более новой версии, и теперь я хочу, чтобы Heroku обновил установленную версию.Я попытался:

heroku run "pip install -r requirements.txt --upgrade -E ."

, который выплевывает правильный вывод на терминал, но, по-видимому, фактически ничего не обновляет;когда я запускаю:

heroku run "pip freeze -E ."

Все версии пакета одинаковы.Я даже пытался удалить пакет, и это тоже не сработало.Как заставить обновление зависимости в проекте Python на Heroku?

Ответы [ 4 ]

15 голосов
/ 28 февраля 2012

Вы должны быть в состоянии обновить его локально, а затем повторно запустить pip freeze. В ваших требованиях .txt == версия должна быть версия, которая устанавливается каждый раз, когда вы нажимаете.

Когда вы запускаете Heroku Run, она запускается в изолированном динамо, на котором она обновляется, затем уничтожается. Чтобы изменения сохранились, они должны произойти во время git push для компиляции в ваш слаг.

7 голосов
/ 25 февраля 2014

Быстрое обновление этого, что теперь есть утилиты для выполнения этой функции.

https://github.com/heroku/heroku-repo

Howto

  1. Установите плагин в инструментальном поясе Heroku

    heroku plugins:install https://github.com/heroku/heroku-repo.git

  2. Очистить кеш Heroku для вашего приложения (эффективно удаляя все пакеты, установленные с помощью pip)

    heroku repo:purge_cache -a <APPNAME>

    из документов: Это удалит содержимое кэша сборки, хранящегося в репозиторий. Это делается в процессе выполнения приложения

  3. Перестройка

    Теперь вы можете нажать как обычно.
    В настоящее время, кажется, что push является единственным способом вызвать перестройку, см. Перекомпилировать слаг Heroku без push или изменения конфигурации здесь для получения дополнительной информации.

3 голосов
/ 03 июля 2017

Я хотел бы представить свой ответ на случай, если кто-то столкнется с тем же.

Heroku не обновляет пакеты, которые уже находятся в версии (что имеет смысл), однако не удается обновить пакет при установке из исходного кода, даже если это другой коммит.

Решение, которое я нашел, заключается в принудительном обновлении с помощью хука после компиляции с pip install --upgrade -r requirements.txt. Поскольку остальные пакеты закреплены, это влияет только на исходные пакеты.

0 голосов
/ 16 мая 2018

Если по какой-то причине он все еще не обновляется, вы можете попытаться удалить зависимость, нажав на git heroku master, а затем заново добавить зависимость с нужной версией и нажать снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...