假设我有这个赤骨结构:
project/
main.py
providers/
__init.py__
acme1.py
acme2.py
acme3.py
acme4.py
acme5.py
acme6.py
假设main.py
包含(部分):
if complexcondition():
print providers.acme5.get()
其中__init__.py
为空且acme*.py
包含(部分):
def get():
value=complexcalculation()
return value
如何将这些文件更改为正常工作?
注意:如果答案是__init__.py
中的“import acme1”、“import acme2”等,是否有办法在不手动列出它们的情况下完成这项工作?
如果我正确地阅读了您的问题,看起来您并没有尝试进行任何动态导入(如Van Gale提到的问题),而实际上只是尝试导入providers包中的所有模块。如果是这样的话,在
__init__.py
中,您需要使用以下语句:然后把你要用的东西从。。。进口*
然后,不用在代码中显式地使用包名称,只需调用导入的类
如果providers包中有足够的模块,在填充
__all__
列表时会出现问题,那么您可能需要考虑将它们分解成更小的包或以其他方式存储数据。我个人不希望每次我想重新使用这个包时都要处理动态导入schennagins的问题。今天问的这个问题,Dynamic Loading of Python Modules应该有你的答案。
嘿!两年后但是。。。也许对某个人有帮助
使您的提供者/uu init_uuu.py像这样:
如果以后添加或删除任何提供程序/acme*.py
然后在main.py中使用
from providers import *
相关问题 更多 >
编程相关推荐