¿Cuál es la forma más eficiente de enumerar todas las dependencias necesarias para implementar un proyecto de trabajo en otro lugar (por ejemplo, en un sistema operativo diferente)?
Python 2.7, entorno de desarrollo de Windows, que no usa un entorno virtual por proyecto, sino un entorno de desarrollo global, que instala bibliotecas según sea necesario y salta alegremente de un proyecto al siguiente.
He realizado un seguimiento de la mayoría de las bibliotecas (no estoy seguro de todas ) que tuve que instalar para un proyecto determinado. No he realizado un seguimiento de las subdependencias que se instalaron automáticamente con ellos. Hacer pip freeze enumera ambos, además de todas las demás bibliotecas que alguna vez se instalaron.
¿Hay alguna manera de enumerar lo que necesita instalar, ni más ni menos, para implementar el proyecto?
EDITAR En vista de las respuestas a continuación, algunas aclaraciones. Mi proyecto consta de un montón de módulos (que escribí), cada uno con un montón de import s. ¿Debería simplemente copiar y pegar todas las importaciones de todos los módulos en un solo archivo, clasificar eliminando los duplicados y descartar todo de la biblioteca estándar (y cómo sé que lo son)? ¿O hay un mejor camino? Esa es la pregunta.
pipreqs resuelve el problema. Genera un archivo require.txt a nivel de proyecto .
Instalar pipreqs: pip install pipreqs
pipreqs /path/to/your/project/ Si desea leer más ventajas de pipreqs sobre pip freeze , léalo desde aquí
Escanee sus extractos de import . Lo más probable es que solo importe cosas que explícitamente quería importar, y no las dependencias.
Haga una lista como la de one pip freeze , luego cree y active un virtualenv.
Haz pip install -r your_list e intenta ejecutar tu código en ese virtualenv. Preste atención a las excepciones de ImportError , asócielas con los paquetes y agréguelas a su lista. Repita hasta que su código se ejecute sin problemas.
Ahora tiene una lista para alimentar a la pip install en su sitio de implementación.
Esto es extremadamente manual, pero no requiere herramientas externas y lo obliga a asegurarse de que su código se ejecute. (Ejecutar su conjunto de pruebas como una verificación es excelente, pero no suficiente).
En su tipo de terminal:
pip install pipdeptree cd <your project root> pipdeptree