Saltar al contenido

¿Cuándo sería útil la opción -e, –editable con pip install?

Esta es el arreglo más completa que te podemos aportar, pero primero estúdiala pausadamente y valora si se adapta a tu proyecto.

Solución:

Como dice la página man:

-e,--editable 
     Install a project in editable mode (i.e.  setuptools "develop mode") from a local project path or a VCS url.

Por lo tanto, usaría esto cuando intente instalar un paquete localmente, con mayor frecuencia en el caso de que lo esté desarrollando en su sistema. Simplemente vinculará el paquete a la ubicación original, lo que básicamente significa que cualquier cambio en el paquete original se reflejará directamente en su entorno.

Algunas pepitas alrededor de lo mismo aquí y aquí.

Desde Trabajando en modo “desarrollo”:

Aunque no es obligatorio, es común instalar localmente su proyecto en modo “editable” o “desarrollar” mientras trabaja en él. Esto permite que su proyecto sea tanto instalado como editable en forma de proyecto.

Suponiendo que está en la raíz del directorio de su proyecto, ejecute:

pip install -e .

Aunque algo críptico, -e es corto para
--editabley . se refiere al directorio de trabajo actual, por lo que juntos significan instalar el directorio actual (es decir, su proyecto) en modo editable.

Algunas ideas adicionales sobre el funcionamiento interno de las herramientas de configuración y las distutils del “Modo de desarrollo”:

En circunstancias normales, el distutils asuma que va a construir una distribución de su proyecto, no lo use en su forma “en bruto” o “sin construir”. Si fueras a usar el distutils de esa manera, tendría que reconstruir y reinstalar su proyecto cada vez que le hiciera un cambio durante el desarrollo.

Otro problema que a veces surge con el distutils es que es posible que necesite desarrollar dos proyectos relacionados al mismo tiempo. Es posible que deba colocar los paquetes de ambos proyectos en el mismo directorio para ejecutarlos, pero debe mantenerlos separados para fines de control de revisión. ¿Cómo puedes hacer esto?

Setuptools le permite implementar sus proyectos para usarlos en un directorio común o área de preparación, pero sin copiar ningún archivo. Por lo tanto, puede editar el código de cada proyecto en su directorio de pago y solo necesita ejecutar comandos de compilación cuando cambia las extensiones C de un proyecto o archivos compilados de manera similar. Incluso puede implementar un proyecto en el directorio de pago de otro proyecto, si esa es su forma preferida de trabajar (en lugar de usar un área de preparación independiente común o el directorio de paquetes del sitio).

Para hacer esto, use el setup.py develop mando. Funciona de manera muy similar a setup.py install, excepto que en realidad no instala nada. En su lugar, crea una especial .egg-link archivo en el directorio de implementación, que se vincula con el código fuente de su proyecto. Y, si su directorio de implementación es de Python site-packages directorio, también actualizará el easy-install.pth archivo para incluir el código fuente de su proyecto, haciéndolo así disponible en sys.path para todos los programas que usan esa instalación de Python.

Ejemplo concreto de uso --editable en desarrollo

Si juegas con este paquete de prueba como en:

cd ~
git clone https://github.com/cirosantilli/vcdvcd
cd vcdvcd
git checkout 5dd4205c37ed0244ecaf443d8106fadb2f9cfbb8
python -m pip install --editable . --user

da salida:

Obtaining file:///home/ciro/bak/git/vcdvcd
Installing collected packages: vcdvcd
  Attempting uninstall: vcdvcd
    Found existing installation: vcdvcd 1.0.6
    Can't uninstall 'vcdvcd'. No files were found to uninstall.
  Running setup.py develop for vcdvcd
Successfully installed vcdvcd-1.0.6

los Can't uninstall 'vcdvcd' es normal: trató de desinstalar cualquier existente vcdvcd para luego reemplazarlos con el “mecanismo similar a un enlace simbólico” que se produce en los siguientes pasos, pero falló porque no hubo instalaciones previas.

Luego genera un archivo:

~/.local/lib/python3.8/site-packages/vcdvcd.egg-link

que contiene:

/home/ciro/vcdvcd
.

y actúa como un “enlace simbólico” al intérprete de Python.

Así que ahora, si realizo algún cambio en el código fuente de git en /home/ciro/vcdvcdse refleja automáticamente en los importadores que pueden desde cualquier directorio hacer:

python -c 'import vcdvcd'

Tenga en cuenta sin embargo que en mi pip versión al menos, archivos binarios instalados con --editabletales como el vcdcat script proporcionado por ese paquete a través de scripts= en setup.pyno obtenga enlaces simbólicos, solo copie en:

~/.local/bin/vcdcat

al igual que para las instalaciones regulares y, por lo tanto, las actualizaciones del repositorio de git no los afectarán directamente.

En comparación, un regular no --editable instalar desde la fuente de git:

python -m pip uninstall vcdvcd
python -m pip install --user .

produce una copia de los archivos instalados en:

~/.local/lib/python3.8/site-packages/vcdvcd

La desinstalación de un paquete editable como se hizo anteriormente requiere un pip lo suficientemente nuevo como se menciona en: Cómo desinstalar paquetes editables con pip (instalado con -e)

Probado en Python 3.8, pip 20.0.2, Ubuntu 20.04.

Recomendación: desarrollar directamente en el árbol siempre que sea posible

La configuración editable es útil cuando está probando su parche en un paquete a través de otro proyecto.

Sin embargo, si puede probar completamente su cambio en el árbol, simplemente hágalo en lugar de generar una instalación editable que es más compleja.

Por ejemplo, el paquete vcdvcd anterior está configurado de una manera que solo puede cd en la fuente y hacer ./vcdcat sin que pip instale el paquete en sí (en general, es posible que deba instalar dependencias desde requirements.txt aunque), y el import vcdvcd que ese ejecutable (o posiblemente su propia prueba personalizada) simplemente encuentra el paquete correctamente en el mismo directorio en el que vive.

Si conservas alguna vacilación o forma de aclararse nuestro tutorial eres capaz de ejecutar una interpretación y con gusto lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *