python - que - ¿Cómo hacer una desinstalación con virtualenv en heroku cedro pila?
virtualenv python windows (4)
Ahora hay una forma más simple de borrar el caché de pip. Simplemente cambie el entorno de tiempo de ejecución, por ejemplo, de ''python-2.7.3'' a ''python-2.7.2'', o viceversa.
Para hacer esto, agregue un archivo llamado runtime.txt a la raíz de su repositorio que contiene solo la cadena de tiempo de ejecución (como se muestra arriba) en él.
Para que esto funcione, debe haber activado la función de compilación de env de usuario de heroku labs. Ver user-env-compile
Traté de desinstalar un módulo en heroku con:
heroku ejecuta bin / python bin / pip desinstala lo que sea
Pip muestra el módulo en el / árbol de aplicaciones y afirma haber instalado el módulo, pero al ejecutar el mismo comando nuevamente, se muestra instalado en la misma ubicación en el árbol / app.
¿Hay alguna forma de que pip uinstall tenga éxito?
Heroku ejecuta instancias de un nuevo banco de pruebas y ejecuta el comando especificado solo en ese banco de pruebas. Los Dynos son efímeros y por eso los resultados de la desinstalación de pip no se mantienen.
He creado algunas recetas de archivos fab para las respuestas de Maxime y Jesse que permiten volver a instalar los requisitos con un solo comando fab: https://gist.github.com/littlepea/5096814 (consulte los documentos para obtener una explicación y ejemplos).
Para la respuesta de Maxime, he creado una tarea ''heroku_clean'' (o ''hc''), se verá algo así:
fab heroku_clean
O usando un alias y especificando una aplicación heroku:
fab hc:app=myapp
Para la respuesta de Jesse he creado una tarea ''heroku_runtime'' (o ''hr''), establece heroku python runtime y confirma runtime.txt (también lo crea si no existía):
fab heroku_runtime:2.7.2
Si no se pasa la versión de tiempo de ejecución, simplemente lo alternará entre 2.7.2 y 2.7.3, por lo que la forma más fácil de cambiar y confirmar el tiempo de ejecución es:
fab hr
Entonces puedes simplemente implementar (empujar al origen de heroku) tu aplicación y la virtualenv será reconstruida. También agregué una tarea ''heroku_deploy'' (''hr'') que uso para heroku push and scale que también puede ser usuario junto con la tarea ''heroku_runtime''. Este es mi método preferido para implementar y reconstruir virtualenv: todo sucede en un comando y puedo elegir cuándo reconstruirlo; no me gusta hacerlo cada vez, como sugiere la respuesta de Maxime porque puede llevar mucho tiempo:
fab hd:runtime=yes
Esto es un equivalente de:
fab heroku_runtime
fab heroku_deploy
Por defecto virtualenv se almacena en caché entre implementaciones.
Para evitar el almacenamiento en caché de paquetes, puede ejecutar:
heroku config:add [email protected]:heroku/heroku-buildpack-python.git#purge
De esta forma, todo se construirá desde cero después de realizar algunos cambios. Para habilitar el almacenamiento en caché, simplemente elimine la variable de configuración BUILDPACK_URL.
Ahora para desinstalar paquetes específicos:
- Elimine el (los) registro (s) correspondiente (s) de los
requirements.txt
; - Comprométase y presione los cambios.
Gracias a Lincoln del equipo de soporte de Heroku por las aclaraciones.
Actualizado 30/09/2013: la forma actual de borrar el virtualenv parece especificar una versión de tiempo de ejecución de python diferente en runtime.txt
como se indica en Github y en la referencia de devcenter de Heroku .
Tenga en cuenta que Heroku actualmente "solo respalda y respalda el uso de Python 2.7.4 y 3.3.2", por lo tanto, a menos que su aplicación sea compatible con Python 2.7.4 y 3.3.2, es posible que desee probarlo con el tiempo de ejecución que desee. para cambiar a (actualmente disponible en http://envy-versions.s3.amazonaws.com/$PYTHON_VERSION.tar.bz2
, aunque no debería ser un problema cambiar, por ejemplo, entre 2.7.4 y 2.7.3 en la mayoría de los casos )
Gracias @Jesse por su answer actualizada y por los comentaristas que me hicieron conocer el problema.
Estaba actualizado en noviembre de 2012 (no he actualizado el paquete de construcción vinculado, mi solicitud de extracción se cerró y la característica CLEAN_VIRTUALENV fue eliminada en algún momento por el buildpack oficial):
Como David explicó, no se puede desinstalar un paquete, pero se puede purgar y volver a instalar todo el virtualenv. Use la función de laboratorio user-env-compile con la opción CLEAN_VIRTUALENV para purgar el virtualenv:
heroku labs:enable user-env-compile
heroku config:add CLEAN_VIRTUALENV=true
Actualmente esto no funcionará porque hay un error. Necesitarás usar mi fork del buildpack hasta que esto se arregle en sentido ascendente (se cerró la solicitud de extracción):
heroku config:add BUILDPACK_URL=https://github.com/blaze33/heroku-buildpack-python.git
Ahora inserte su nuevo código y notará que todo el virtualenv se vuelve a instalar.
La respuesta de Andrey ya no funciona desde el 23 de marzo de 2012. El nuevo estilo virtualenv commit movió el env virtual de / app a /app/.heroku/venv, pero la rama de purga no se actualizó para ponerse al día, de modo que terminas con un virtualenv no estar en PYTHONHOME.
Para evitar volver a instalar todo después de cada inserción, deshabilite la opción:
heroku labs:disable user-env-compile
heroku config:remove CLEAN_VIRTUALENV BUILDPACK_URL