Pregunta

Tengo un montón de archivos en C generados por una colección de programas de Python que tienen varios módulos de Python compartidos y debo tener esto en cuenta en mi sistema de creación.

Es bastante fácil enumerar qué programa de Python se debe ejecutar para generar cada archivo C. Para lo que no puedo encontrar una buena solución es determinar de qué otros archivos de Python dependen esos programas. Necesito esto para que sepa qué se necesita regenerar si uno de los archivos de Python compartidos cambia.

¿Existe un buen sistema para crear reglas de dependencia de estilo de creación a partir de una colección de fuentes de python?

¿Fue útil?

Otros consejos

Las declaraciones import son prácticamente todas las dependencias que existen. Hay dos formularios relevantes para las declaraciones de importación:

import x, y, z
from x import a, b, c

También necesitará la información de PYTHONPATH y sites que se utiliza para crear sys.path . Esto muestra las ubicaciones físicas de los módulos y paquetes.

Es un proceso difícil de procesar, ya que tienes que hacer el cierre transitivo de todas las importaciones en todos los módulos que importas.

Como un enfoque alternativo, puede usar la opción -v para obtener la lista completa de importaciones y archivos físicos. Esto produce un registro que puede editar en una lista plana de dependencias.

Por ejemplo, cuando lo hago

>>> import math

Veo esto en el registro

dlopen("/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/math.so", 2);
import math # dynamically loaded from /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/math.so
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top