我會結構中的包是這樣的:
myPackage
+ -- __init__.py
+ -- Component.py
+ -- user_defined_packages
+ -- __init__.py # 1
+ -- example.py
思路:
- 讓用戶拖放到不同的文件夾,讓他們不要混淆你的代碼,他們
- 的初始化文件
user_defined_packages
可以加載所有子包,一旦導入user_defined_packages
。它必須打印所有錯誤。
__init__.py
#1
import os
import traceback
import sys
def import_submodules():
def import_submodule(name):
module_name = __name__ + '.' + name
try:
__import__(module_name)
except:
traceback.print_exc() # no error should pass silently
else:
module = sys.modules[module_name]
globals()[name] = module # easier access
directory = os.path.dirname(__file__)
for path_name in os.listdir(directory):
path = os.path.join(directory, path_name)
if path_name.startswith('_'):
# __pycache__, __init__.py and others
continue
if os.path.isdir(path):
import_submodule(path_name)
if os.path.isfile(path):
name, extension = os.path.splitext(path_name)
if extension in ('.py', '.pyw'):
import_submodule(name)
import_submodules()