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
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.
Alma python modül yolu...
Nasıl Python geçerli modül içerisindek...
Hayır modül adında python İmportError...
Python paket/modül yönetim sistemi var...
Nasıl python ile dinamik () parametriz...