SORU
19 Kasım 2008, ÇARŞAMBA


Dinamik modül Python al

Örneğin, bağımsız değişken olarak, bir komut olarak alır Python ile bir uygulama yazıyorum

$ python myapp.py command1

Uygulama, ana uygulama kaynağını değiştirmek zorunda kalmadan yeni komutları uygulayan yeni modülleri eklemek genişletilebilir olmak istiyorum. Ağaç gibi bir şey görünüyor:

myapp/
    __init__.py
    commands/
        __init__.py
        command1.py
        command2.py
    foo.py
    bar.py

Uygulamanın çalışma zamanında kullanılabilir komut modülleri bulmak ve uygun bir çalıştırmak istiyorum o kadar.

Şu anda bu uygulanan bir şey

command = sys.argv[1]
try:
    command_module = __import__("myapp.commands.%s" % command, fromlist=["myapp.commands"])
except ImportError:
    # Display error message

command_module.run()

Bu sadece eğer muhtemelen bu kod ile ne yaptığımızı başarmak için daha deyimsel bir yolu olup olmadığını merak ediyorum sadece iyi çalışır.

Ben özellikle yumurta veya uzantısı puan kullanarak almak istemiyorum unutmayın. Bu açık kaynak kodlu bir proje değil ve olmasını da beklemiyorum"". eklentileri Nokta ana uygulama kodu basitleştirmek ve yeni bir komuta modülü eklenir her zaman değiştirme ihtiyacını ortadan kaldırmaktır.

CEVAP
19 Kasım 2008, ÇARŞAMBA


Hayır, bunu yapmak için ne kadar çok benziyor. Eğer siz de isterseniz exec kullanabilirsiniz.

Bunu yaparak: modüllerin bir listesini alabilirsiniz not

>>> moduleNames = ['sys', 'os', 're', 'unittest'] 
>>> moduleNames
['sys', 'os', 're', 'unittest']
>>> modules = map(__import__, moduleNames)

Dive Into Python düz sökük.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BachelorsPadTv

    BachelorsPad

    17 Ocak 2012
  • BigDawsTv

    BigDawsTv

    20 HAZİRAN 2012
  • The Slow Mo Guys

    The Slow Mo

    15 AĞUSTOS 2010