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

Я попытался удалить модуль на heroku с помощью:

heroku запустить bin/python bin/pip удалить все

Pip показывает модуль в дереве /app, а затем утверждает, что он укомплектовал модуль, но повторное выполнение этой же команды показывает, что оно установлено в том же месте в дереве/приложении.

Есть ли способ получить успешное решение pip uinstall?


Работа Heroku запускает новый динозавр и запускает команду, указанную только в этом dyno. Dynos являются эфемерными, поэтому результаты удаления pip не прилипают.

Обновлен 2013-09-30:. Текущий способ очистки виртуального файла, по-видимому, указывает другую версию исполнения python в runtime.txt как указано в Github и в ссылка Herocu devcenter.

Имейте в виду, что Heroku в настоящее время "поддерживает и поддерживает использование Python 2.7.4 и 3.3.2", поэтому, если ваше приложение не поддерживает оба Python 2.7.4 и 3.3.2, вы можете протестировать его со временем выполнения 'lh хотите переключиться на (в настоящее время доступно в http://envy-versions.s3.amazonaws.com/$PYTHON_VERSION.tar.bz2, хотя в большинстве случаев не должно быть проблем с переключением, например, между 2.7.4 и 2.7.3).

Спасибо @Jesse за ваш последний ответ и комментаторам, которые сообщили мне об этой проблеме.


Был обновлен в ноябре 2012 года (с тех пор как обновленный связанный сборщик не обновлялся, мой запрос на загрузку был закрыт, а функция CLEAN_VIRTUALENV была удалена в какой-то момент официальным сборщиком)

Как объяснил Дэвид, вы не можете удалить один пакет, но вы можете очистить и переустановить весь virtualenv. Используйте user-env-compile с помощью опция CLEAN_VIRTUALENV очистить virtualenv:

heroku labs:enable user-env-compile
heroku config:add CLEAN_VIRTUALENV=true

В настоящее время это не сработает, потому что есть ошибка. Вам нужно будет использовать мою вилку в buildpack до тех пор, пока get фиксированный восходящий поток (запрос на pull был закрыт):

heroku config:add BUILDPACK_URL=https://github.com/blaze33/heroku-buildpack-python.git

Теперь нажмите новый код, и вы заметите, что весь virtualenv будет переустановлен.

Ответ Andrey больше не работает с 23 марта 2012 года. новый стиль virtualenv commit переместил виртуальное env из /app в/app/. heroku/venv, но ветвь чистки не обновлялась, чтобы догнать вас, чтобы вы оказались в виртуальной среде, не находясь в PYTHONHOME.

Чтобы не переустанавливать все после каждого нажатия, отключите параметр:

heroku labs:disable user-env-compile
heroku config:remove CLEAN_VIRTUALENV BUILDPACK_URL
32
ответ дан 15 июня '12 в 20:56
источник

Теперь есть более простой способ очистки кэша пипов. Просто измените среду выполнения, например, с "python-2.7.3" на "python-2.7.2" или наоборот.

Чтобы сделать это, добавьте файл с именем runtime.txt в корень вашего репозитория, который содержит только строку времени выполнения (как показано выше).

Для этого вам необходимо включить функцию пользовательской компиляции в лаборатории Heroku. См. https://devcenter.heroku.com/articles/labs-user-env-compile

22
ответ дан 26 февр. '13 в 14:09
источник

По умолчанию virtualenv кэшируется между развёртываниями.

Чтобы избежать кэширования пакетов, вы можете запустить:

heroku config:add BUILDPACK_URL=git@github.com:heroku/heroku-buildpack-python.git#purge

Таким образом, все будет создано с нуля после того, как вы нажмете некоторые изменения. Чтобы включить кеширование, просто удалите конфигурационную переменную BUILDPACK_URL.

Теперь для удаления определенных пакетов (ов):

  • Удалите соответствующие записи из requirements.txt;
  • Зафиксируйте и нажмите изменения.

Спасибо Линкольну из группы поддержки Heroku за разъяснения.

10
ответ дан 27 февр. '12 в 12:58
источник

Я создал несколько рецептов fabfile для ответов Maxime и Jesse, которые позволяют повторно установить требования с помощью одной команды fab: https://gist.github.com/littlepea/5096814 ( посмотрите на докстоки для объяснения и примеры).

Для ответа Maxime я создал задачу "heroku_clean" (или "hc" ), это будет выглядеть примерно так:

fab heroku_clean

Или используя псевдоним и указав приложение heroku:

fab hc:app=myapp

Для ответа Джесси я создал задачу "heroku_runtime" (или "hr" ), она устанавливает время выполнения скрипта heroku python и фиксирует runtime.txt(также создает его, если его не было):

fab heroku_runtime:2.7.2

Если версия исполнения не передана, она просто переключит ее между 2.7.2 и 2.7.3, поэтому самый простой способ изменить и зафиксировать время выполнения:

fab hr

Затем вы можете просто развернуть (нажать на начало героя) ваше приложение, и virtualenv будет перестроен. Я также добавил задачу "heroku_deploy" ( "hr" ), которую я использую для нажатия и масштабирования heroku, которые также могут быть пользователями вместе с задачей "heroku_runtime". Это мой предпочтительный метод развертывания и восстановления virtualenv - все происходит в одной команде, и я могу выбрать, когда его перестраивать, я не люблю делать это каждый раз, как подсказывает Maxime, потому что это может занять много времени:

fab hd:runtime=yes

Это эквивалент:

fab heroku_runtime
fab heroku_deploy
0
ответ дан 06 марта '13 в 8:12
источник