python - Eliminar paquetes no utilizados del archivo de requisitos
pip refactoring (3)
La mejor opción es usar un ( nuevo ) python virtual-env sin paquetes, o solo los que definitivamente sabe que necesita, probar su paquete: instalar paquetes faltantes con pip
cuando encuentre problemas que deberían ser bastante rápidos para la mayoría de los programas y luego usar el comando pip freeze
para listar los paquetes que realmente necesitas. Mejor usted podría usar la pip wheel
para crear una rueda con los paquetes en.
El otro enfoque sería:
- Use pylint para revisar cada archivo en busca de importaciones no utilizadas y elimínelas, (debería hacer esto de todos modos),
- Ejecute sus pruebas para asegurarse de que fue correcto,
- Use una herramienta como snakefood para generar su nueva lista de dependencias
Tenga en cuenta que para que cualquier verificación de dependencia funcione bien, es aconsejable evitar la importación condicional y la importación dentro de las funciones.
También tenga en cuenta que para asegurarse de que tiene todo, entonces es una buena idea crear un nuevo entorno virtual e instalar desde la lista de dependencias y luego volver a probar su código.
¿Hay alguna forma fácil de eliminar los paquetes que ya no se utilizan del archivo de requisitos ?
Escribí un script de bash para esta tarea, pero no funciona como esperaba. Porque, algunos paquetes no se utilizan después de sus nombres de proyectos PyPI. Por ejemplo;
dj-database-url
paquete se utiliza como
dj_database_url
Mi proyecto tiene muchos paquetes en su propio archivo de requisitos, por lo tanto, buscarlos uno por uno es demasiado complicado, propenso a errores y lleva demasiado tiempo. Mientras buscaba, los IDE todavía no tienen esta propiedad.
Lo he utilizado con éxito pip-check-reqs .
Con el comando pip-extra-reqs your_directory
verificará todas las dependencias no utilizadas en your_directory
Instálelo con pip install pip-check-reqs
.
Puedes usar Code Inspection en PyCharm .
Elimine el contenido de sus requirements.txt
pero mantenga el archivo vacío. Cargue su proyecto, PyCharm vaya a Code -> Inspect code...
Elija la opción Whole project
en el cuadro de diálogo y haga OK
en OK
. En el panel de resultados de inspección, ubique la sección Package requirements
en Python
(tenga en cuenta que esta sección se mostrará solo si hay algún archivo setup.py
o setup.py
). La sección contendrá uno de los siguientes mensajes:
-
Package requirement ''<package>'' is not satisfied
si hay algún paquete que se encuentra enrequirements.txt
pero no se usa en ningún archivo .py. -
Package ''<package>'' is not listed in project requirements
si hay algún paquete que se usa en archivos .py, pero no se encuentra enrequirements.txt
.
Usted está interesado en la segunda inspección. Puede agregar todos los paquetes usados a requirements.txt
haciendo clic con el botón derecho en la sección Package requirements
del Package requirements
y seleccionando Apply Fix ''Add requirements ''<package>'' to requirements.txt''
. Tenga en cuenta que solo mostrará un nombre de paquete, pero en realidad agregará todos los paquetes usados a requirements.txt
si se le solicita la sección.
Si lo desea, puede agregarlos uno por uno, simplemente haga clic con el botón derecho en la inspección correspondiente a cierto paquete y seleccione Apply Fix ''Add requirements ''<package>'' to requirements.txt''
, repítalo para cada inspección de este tipo.
Después de eso, puede crear un entorno virtual limpio e instalar paquetes desde los nuevos requirements.txt
.
También tenga en cuenta que PyCharm tiene una función de optimización de importación, vea Optimizar importaciones .... Puede ser útil usar esta función antes de cualquier otro paso mencionado anteriormente.