import importlib
import pkgutil
# 动态导入包
package = importlib.import_module('tests.modules')
# 获取包的路径
package_path = package.__path__
# 打印包的路径
print("包的路径", package_path)
# 打印包的名称
print("包的名称", package.__name__)
# 获取包下的所有模块
modules = pkgutil.iter_modules(package_path, package.__name__ + ".")
print("包下的所有模块对象", modules)
# 遍历模块
for module in modules:
print("模块名称", module.name)
print("模块路径", module.ispkg)
print("模块路径", module.ispkg)"""
name: 要导入的模块或包的名称(字符串)。
globals: 全局命名空间字典(通常不需要显式指定)。
locals: 局部命名空间字典(通常不需要显式指定)。
fromlist: 一个列表,指定要从模块中导入的子模块或属性。如果为空列表 [],则导入整个包。
level: 相对导入的级别(通常不需要显式指定)。
"""
# 1. 导入整个包
package = __import__('tests.modules', fromlist=[''])
print(package.__name__) # 输出: tests.modules
print(package.__path__) # 输出: ['D:\\桌面\\test\\fast-api-admin\\tests\\modules']
# 2. 导入特定子模块
submodule1 = __import__('tests.modules.submodule1', fromlist=['greet'])
submodule2 = __import__('tests.modules.submodule2', fromlist=['greet'])
print(submodule1.__name__) # 输出: tests.modules.submodule1
print(submodule1.greet()) # 输出: Hello from submodule1
print(submodule2.__name__) # 输出: tests.modules.submodule2
print(submodule2.greet()) # 输出: Hello from submodule2