2008-10-24 10 views
7

Bir dizi paylaşılan python modülüne sahip bir python programı koleksiyonu tarafından oluşturulan bir grup C dosyasına sahibim ve bunu benim make sistemimde hesaba katmam gerekiyor.10 Python kodu için Makefile bağımlılıkları nasıl yapılır

Her bir C dosyasını oluşturmak için hangi python programının çalıştırılmasının gerektiğini belirtmek yeterince kolaydır. İyi bir çözüm bulamadığım şey, bu programların hangi python dosyalarını bağımlı olduğunun belirlenmesidir. Buna ihtiyacım var, çünkü paylaşılan python dosyalarından biri değiştiğinde neyin yeniden üretilmesi gerektiğini bilecek.

Python kaynaklarından bir koleksiyonda stil bağımlılık kurallarını oluşturmak için iyi bir sistem var mı?

cevap

3

modulefinder içinde görüyoruz.

+0

Bazı modüllerin (ör. PIL) dinamik içe aktarmalarla eğlenceli şeyler yapabildiğini unutmayın, bu nedenle modüle edilemeyen öğelerin bazen her şeyi bulmak için biraz yardıma ihtiyacı vardır. –

1

import ifadeleri, oldukça fazla bağımlılık var.

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

Ayrıca sys.path oluşturmak için kullanılan PYTHONPATH ve sites bilgi gerekir: import ifadeleri için iki ilgili formlar vardır vardır. Bu, modüllerin ve paketlerin fiziksel yerlerini gösterir.

Bu, içe aktarılacak tüm modüllerde tüm ithalatların geçişini kapatmak zorunda olduğunuzdan, işlemek için çok acı verir.

Alternatif bir yaklaşım olarak, içe aktarmaların ve fiziksel dosyaların tam listesini almak için -v seçeneğini kullanabilirsiniz. Bu, bağımlılıkların düz bir listesini düzenleyebileceğiniz bir günlük oluşturur. Örneğin

, ben

>>> import math 

yaparım get the dependency graph için kullanılabilir günlüğüne

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 
İlgili konular