Domanda

Ho un sacco di file C generati da una raccolta di programmi Python che hanno un numero di moduli Python condivisi e ho bisogno di tenerne conto nel mio sistema di creazione.

È abbastanza facile enumerare quale programma python deve essere eseguito per generare ogni file C. Ciò per cui non riesco a trovare una buona soluzione è determinare da quali altri file Python dipendono questi programmi. Ho bisogno di questo, quindi make saprà cosa deve essere rigenerato se uno dei file Python condivisi cambia.

Esiste un buon sistema per produrre regole di dipendenza dallo stile da una raccolta di sorgenti Python?

È stato utile?

Soluzione

Altri suggerimenti

Le istruzioni import sono praticamente tutte le dipendenze che ci sono. Esistono due moduli pertinenti per le dichiarazioni di importazione:

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

Sono inoltre necessarie le informazioni PYTHONPATH e siti utilizzate per creare sys.path . Questo mostra le posizioni fisiche dei moduli e dei pacchetti.

Questo è un po 'doloroso da elaborare, dal momento che devi fare la chiusura transitiva di tutte le importazioni in tutti i moduli che importi.

Come approccio alternativo, puoi usare l'opzione -v per ottenere l'elenco completo delle importazioni e dei file fisici. Questo produce un registro che puoi modificare in un elenco semplice di dipendenze.

Ad esempio, quando lo faccio

>>> import math

Lo vedo nel 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top