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

Python2.7:从另一个目录中的文件目录导入所有模块,python,python-2.7,import,Python,Python 2.7,Import,目录结构: /dir1 foo.py bar.py /dir2 test.py 现在,我想导入dir1中存在的所有模块,并在test.py中使用它。我在/dir1中使用了一个\uu init\uuuuuuuuuuupy,内容如下: from os.path import dirname, basename, isfile import glob modules = glob.glob(dirname(__file__)+"/*.py") __all__ = [ bas

目录结构:

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

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
中从dir1 import*执行
时,它会显示
没有名为dir1的模块

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

问题是Python只在当前目录中搜索,而您大概是在
dir2
中运行此操作-因此Python希望
dir1
dir2

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

import sys
sys.path.append('/path/to/parent/of/dir1')

您需要使用
importlib

以下内容在Python 3.3+中使用

从importlib.machine导入SourceFileLoader path='../dir1/foo.py' 模块名称='foo' loader=SourceFileLoader(模块名称、路径) module=loader.load_module()
是我做的,@Martin,但我还是得到了同样的错误。你把它添加到
test.py
文件了吗?是的。当我从
test.py
文件内部打印
sys.path
时,我实际上可以看到
'/path/to/parent/of/dir1'
存在。但是,它仍然给了我同样的错误。你能确认
dir1
实际上不在路径中吗。它正好以父目录的名字结尾。非常感谢,马丁。我犯的错误是我将路径添加到了
dir1
,而不是dir1的父级
:)它现在可以工作了谢谢,但是我需要一个python 2.7的解决方案。我刚刚编辑了我的问题,以便更清楚地说明这一点。:)在Fabric代码中查看这个函数:如果你想从dir1导入*我想你必须在dir1中编辑init.py是的,我已经这样做了。问题中提到了这一点。
from importlib.machinery import SourceFileLoader

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

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