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

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 .

sobolevn
fuente
¿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

usuario2488286
fuente
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.

ely
fuente
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í ).

Jan Kundrát
fuente