Pergunta

Eu tenho vários arquivos C que são gerados por uma coleção de programas Python que possuem vários módulos de Python compartilhados e preciso explicar isso no meu sistema Make.

É fácil o suficiente para enumerar qual programa Python precisa ser executado para gerar cada arquivo C. O que não consigo encontrar uma boa solução é determinar quais outros arquivos Python esses programas dependem. Eu preciso disso para que faça saber o que precisa se regenerar se um dos arquivos Python compartilhados mudar.

Existe um bom sistema para produzir regras de dependência de estilo de uma coleção de fontes de Python?

Foi útil?

Solução

Outras dicas

o import As declarações são praticamente todas as dependências que existem. Existem dois formulários relevantes para as declarações de importação:

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

Você também precisará do PYTHONPATH e sites informações que são usadas para construir sys.path. Isso mostra os locais físicos dos módulos e pacotes.

É meio doloroso processar, já que você precisa fazer o fechamento transitivo de todas as importações em todos os módulos que você importa.

Como uma abordagem alternativa, você pode usar o -v opção para obter a lista completa de importações e arquivos físicos. Isso produz um log que você pode editar em uma lista plana de dependências.

Por exemplo, quando eu faço

>>> import math

Eu vejo isso no log

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top