0

我想从我使用 pip 安装的包的特定目录中导入所有模块,也就是说,它位于site-packages.

我试过的

假设包名称是package,并且它有一个名为directory. 它有许多文件,如a.py,b.py等。我需要将它们全部导入。我列出了directoryusing in-built 中的所有文件__file__,这不是问题。当我尝试使用 导入模块importlib.import_module时,ModuleNotFoundError即使我 100% 确定它们存在。我使用了相对导入。

代码片段

modules是所有文件的列表directory

for module in modules:
    importlib.import_module('.'+module, 'C:\\Users\\.....\\package\\directory')

ModuleNotFoundError: No module named 'C:\\Users\\.....\\package\\directory'

最后

我做错了什么以及引用站点包的正确方法是什么?

4

1 回答 1

0

__init__.py在要执行的目录下创建一个空文件

import pkgutil
import sys


def load_all_modules_from_dir(dirname):
    for importer, package_name, _ in pkgutil.iter_modules([dirname]):
        full_package_name = '%s.%s' % (dirname, package_name)
        if full_package_name not in sys.modules:
            module = importer.find_module(package_name
                        ).load_module(full_package_name)
            print module


load_all_modules_from_dir('site-packages')
于 2021-12-30T13:14:32.073 回答