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

  • HowcastTechGadgets

    HowcastTechG

    22 EYLÜL 2010
  • Leigh Momii

    Leigh Momii

    10 Mayıs 2006
  • MattSteffanina 2

    MattSteffani

    28 Kasım 2007