SORU
28 Ocak 2009, ÇARŞAMBA


Paket Python modülleri isimleri listesi için standart bir yolu var mı?

Basit bir şekilde __all__ kullanmadan bir pakette tüm modülleri isimleri listesi var mı?

Bu paket, belirli bir örnek için:

/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py

Eğer bir standart var mı diye soracaktım ya da yerleşik böyle bir şey yapmak için gidiyorum:

>>> package_contents("testpkg")
['modulea', 'moduleb']

Manuel yaklaşım, paketin dizin bulmak için modül arama yolu arasında dolaşmak olacaktır. Bir dizindeki tüm dosyaları listeler, benzersiz olarak adlandırılmış py/bilim/pyo dosyaları filtrelemek uzantıları şerit, ve bu liste dönebilir. Ama bu zaten DAHİLİ olarak yaptığı bir şey için çalışma adil bir miktar gibi görünüyor. Bu işlevsellik herhangi bir yerde ortaya?

CEVAP
21 AĞUSTOS 2009, Cuma


python2.3 and above da pkgutil modülünü kullanabilirsiniz kullanma

>>> import pkgutil
>>> [name for _, name, _ in pkgutil.iter_modules(['testpkg'])]
['modulea', 'moduleb']

DÜZENLEME:Parametre modülleri, ama yolların bir listesi listesi değildir, böyle bir şey yapmak isteyebilirsiniz:

>>> import os.path, pkgutil
>>> import testpkg
>>> pkgpath = os.path.dirname(testpkg.__file__)
>>> print [name for _, name, _ in pkgutil.iter_modules([pkgpath])]

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DeAdPiXel6667

    DeAdPiXel666

    2 Ocak 2010
  • RealPapaPit

    RealPapaPit

    16 Mart 2009
  • Shon Gonzales

    Shon Gonzale

    5 EKİM 2014