"Pip install --editable ./" vs "python setup.py desarrollo"


178

¿Hay alguna diferencia significativa entre

pip install -e /path/to/mypackage

y la variante setuptools?

python /path/to/mypackage/setup.py develop

1
Este parece ser un enlace actualizado que describe el modo de desarrollo: setuptools.readthedocs.io/en/latest/…
PaulR

si está interesado en desinstalar (paquetes en desarrollo / modo editable) intente esta pregunta: stackoverflow.com/questions/17346619/…
Charlie Parker

Respuestas:


131

Intente evitar llamar setup.pydirectamente, no le dirá correctamente a pip que ha instalado su paquete.

Con pip install -e:

Para proyectos locales, el directorio "SomeProject.egg-info" se crea en relación con la ruta del proyecto. Esta es una ventaja sobre el simple uso setup.py develop, que crea la "información del huevo" directamente relativa al directorio de trabajo actual.

Más: documentos

Lea también los documentos de setuptools .


¿El usuario tiene que ejecutar 'python setup.py sdist' nuevamente después de hacer el cambio de archivo para que el cambio surta efecto?
variable

sin embargo, si necesita depurar (el archivo setup.py) con 'set_trace', entonces 'python setup.py development' lo hace posible
mirek

La segunda URL está rota.
bad_coder

Ambos trabajan para mi.
sobolevn

76

Una diferencia más: pip install -eusa la rueda mientras python setup.py develop
no la usa.

Con install, podría lograr el mismo comportamiento utilizando
pip install -e /path/to/package --no-use-wheel

Más información sobre ruedas: ruedas de pitón


18
Tenga en cuenta que, de acuerdo con pip.pypa.io/en/stable/reference/pip_install , --no-use-wheelDEPRECATED a favor de--no-binary :all:
Nzbuu

¿Podemos hacer pip install -e para el paquete producido usando sdist?
variable

36

Otra diferencia que puede favorecer pip install -ees que si su proyecto tiene dependencias en install_requiresen setup.py, a continuación, pip install -e .instala dependencias con PIP, mientras que python setup.py developse puede instalar con easy_install, y puede causar problemas re: 'huevo-info' como se mencionó anteriormente. Cuando se install-requiresusa dependency_linkscon URL de git personalizadas, con identificadores de huevo adjuntos, esto puede ser especialmente molesto.


1
Esto explica totalmente por qué mi paquete privado no se pudo instalar. está en mi servidor devpi, no en pypi. Gracias.
ckot

Cuando dice que el paquete se vuelve editable, ¿quiere decir que el usuario tendrá que ejecutar 'python setup.py sdist' nuevamente después de realizar cambios en el archivo del paquete? ¿O no se requiere ejecutar el comando anterior?
variable

@variable cuando instala un paquete local con pip install -e ., esencialmente hace un enlace simbólico en el directorio relevante de paquetes de sitio de Python para apuntar a su copia de trabajo. A medida que se realizan cambios de código en esa copia de trabajo, se refleja instantáneamente en la versión "instalada", por lo que no necesita volver a ejecutar los comandos de instalación a medida que avanza. Esto es principalmente útil para el desarrollo de un repositorio que representa un paquete instalable, pero también puede ser útil para, por ejemplo, escribir alguna colección de módulos con sólo importaciones en términos absolutos, etc.
Ely

0

Otra diferencia más: cuando ejecuta python setup.py developuna versión que se considera una versión preliminar (quizás porque lo está ejecutando desde un clon de git cuando no ha extraído una versión), entonces permitirá la instalación de versiones preliminares de sus dependencias . Por otro lado, con pip install --editableusted tendría que pasar --preexplícitamente si desea estos lanzamientos previos.

(Consulte el registro de CI con versiones preliminares utilizadas accidentalmente y compárelo con una compilación fija aquí ).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.