22 votos

cómo pip desinstalar con virtualenv en heroku de cedro de la pila?

He intentado desinstalar un módulo sobre heroku con:

heroku ejecutar bin/python bin/pip desinstalar cualquier

Pip muestra el módulo en el /app árbol, a continuación, afirma haber uinstalled el módulo, pero ejecutando el mismo comando muestra una vez más instalado en la misma ubicación en el /app árbol.

Es allí una manera de conseguir pip uinstall para tener éxito?


Heroku ejecutar crea una nueva instancia de banco de potencia, y se ejecuta el comando especificado en la que dinamómetro sólo. Dinos son efímeras, que es por qué los resultados de la pip desinstalar no se peguen.

32voto

Maxime R. Puntos 2199

Actualizado 2013-09-30: la actual forma de borrar el virtualenv parece especificar un tiempo de ejecución de python, la versión en runtime.txt como se indica en Github y en la Heroku del devcenter de referencia.

Ser conscientes de que Heroku en la actualidad "sólo avala y apoya el uso de Python 2.7.4 y 3.3.2" así que a menos que su aplicación es compatible con Python 2.7.4 y 3.3.2, es posible que desee probar con el tiempo de ejecución de usted querrá cambiar a (disponible en la actualidad en http://envy-versions.s3.amazonaws.com/$PYTHON_VERSION.tar.bz2, aunque no debería ser un problema para cambiar por ejemplo, entre el y 2.7.3 2.7.4 en la mayoría de los casos).

Gracias @Jesse por su up-to-fecha de respuesta y a los comentaristas que me hizo consciente de la cuestión.


Fue para arriba-a-fecha en ~de noviembre de 2012 (no he actualizado los enlaces de buildpack, mi solicitud de extracción fue cerrado y el CLEAN_VIRTUALENV característica fue abandonado en algún momento por el oficial buildpack):

Como David explicó, no se puede pip desinstalar un paquete, pero puede purgar y vuelva a instalar el conjunto de la virtualenv. Uso el usuario-env-compilar el laboratorio de función con el CLEAN_VIRTUALENV opción para purgar el virtualenv:

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

En la actualidad esto no va a funcionar porque hay un error. Tendrás que usar mi tenedor de la buildpack hasta que esto se arregle aguas arriba (pull request estaba cerrada) :

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

Ahora pulse el nuevo código y te darás cuenta de que todo el virtualenv se pone a instalar.

Andrey de respuesta ya no funciona desde el 23 de Marzo de 2012. El nuevo estilo de virtualenv cometer movido el virtual env de /app /app/.heroku/venv pero la purga de la rama no se ha actualizado para ponerse al día, de modo que usted termina con un virtualenv no estar en PYTHONHOME.

Para evitar reinstalar todo después de cada inserción, deshabilitar la opción:

heroku labs:disable user-env-compile
heroku config:remove CLEAN_VIRTUALENV BUILDPACK_URL

22voto

Jesse Puntos 248

Ahora hay una manera más sencilla de borrar el pip de la caché. Acaba de cambiar el entorno de tiempo de ejecución, por ejemplo, de 'python 2.7.3' a 'python 2.7.2', o viceversa.

Para ello añadir un archivo llamado runtime.txt a la raíz de su repositorio que contiene la cadena de tiempo de ejecución (como se muestra arriba).

Para que esto funcione se necesita tener activado el Heroku laboratorios de usuario-env-compilar característica. Ver https://devcenter.heroku.com/articles/labs-user-env-compile

10voto

Andrey Martyanov Puntos 101

Por defecto virtualenv es en caché entre despliega.

Para evitar el almacenamiento en caché de paquetes puede ejecutar:

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

De esa manera todo va a ser construido desde cero después de pulsar algunos cambios. Para habilitar el almacenamiento en caché de sólo quitar el BUILDPACK_URL de configuración variable.

Ahora para desinstalar un paquete específico(s):

  1. Eliminar el registro correspondiente(s) a partir de la requirements.txt;
  2. Aprobar e introducir los cambios.

Gracias a Lincoln de Heroku Equipo de Apoyo para las aclaraciones.

0voto

littlepea Puntos 551

He creado algunos fabfile recetas para Maxime y Jesse respuestas que permiten la re-instalación de los requisitos con un fab comando: https://gist.github.com/littlepea/5096814 (mira la docstrings para la explicación y ejemplos).

Para Maxime de la respuesta que yo he creado un grupo de 'heroku_clean' (o 'hc'), se verá algo como esto:

fab heroku_clean

O el uso de un alias y la especificación de un heroku de la aplicación:

fab hc:app=myapp

Para Jesse respuesta que yo he creado un grupo de 'heroku_runtime' (o 'hr'), establece heroku tiempo de ejecución de python y se compromete runtime.txt (también lo crea si no existe):

fab heroku_runtime:2.7.2

Si la versión de tiempo de ejecución no se pasa se acaba de alternar entre 2.7.2 2.7.3 y, por lo que la manera más fácil de cambiar y confirmar el tiempo de ejecución es:

fab hr

A continuación, puedes implementar (push heroku origen) de la aplicación y el virtualenv será reconstruida. También he añadido un 'heroku_deploy' tarea ' ('hr') que uso para heroku empuje y la escala que pueden, también, ser usuario junto con 'heroku_runtime tarea. Este es mi método preferido para la implementación y la reconstrucción de virtualenv - todo lo que sucede en uno de los comandos y puedo elegir cuando para su reconstrucción, no me gusta hacerlo cada vez como Maxime respuesta del sugieren debido a que puede tomar un largo tiempo:

fab hd:runtime=yes

Este es un equivalente de:

fab heroku_runtime
fab heroku_deploy

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X