Python2.7: 将一个目录中的所有模块导入到另一个目录中的文件中

Python2.7: Import all modules from a directory in file in another directory

目录结构:

/dir1
    foo.py
    bar.py
/dir2
    test.py

现在,我想导入 dir1 中存在的所有模块并在 dir2 中存在的 test.py 中使用它。我在 /dir1 中使用了一个 __init__.py,内容如下:

from os.path import dirname, basename, isfile
import glob

modules = glob.glob(dirname(__file__)+"/*.py")
__all__ = [ basename(f)[:-3] for f in modules if isfile(f) if not f.endswith('__init__.py')]            

但是,当我在 test.py 中执行 from dir1 import * 时,它显示 no module named dir1

我确实遇到过很多类似的问题,比如this,但似乎没有什么能解决问题。 我哪里错了?

问题是 Python 仅在当前目录中搜索,并且您可能 运行 从 dir2 中搜索 - 因此 Python 期望 dir1dir2.

里面

您需要告诉Python在哪里可以找到dir1,一种方法是将此目录添加到test.py.

内的系统路径中
import sys
sys.path.append('/path/to/parent/of/dir1')

您需要使用importlib

以下作品适用于 Python 3.3+ See Documentation

    from importlib.machinery import SourceFileLoader

    path = '../dir1/foo.py'
    module_name = 'foo'

    loader = SourceFileLoader(module_name, path)
    module = loader.load_module()