如何从python中的其他目录导入模块?

how to import module from other directory in python?

本问题已经有最佳答案,请猛点这里访问。

这是我的目录树

1
2
3
4
5
6
Game/
   a/
      1.py
      ...
   b/
      2.py

在2.py中,我希望从1.py中显示导入函数。首先,我把两个文件都放在同一个文件夹中,没问题。但是如何从其他位置导入呢?


尝试使用imp

1
2
import imp
foo = imp.load_source('filename', 'File\Directory\filename.py')

这就像正常导入一样,现在可以使用导入的文件

然后使用您命名的名称(在本例中为foo),如下所示:

1
foo.method()

希望这就是你要找的!

您也可以尝试以下操作:

1
2
import sys
sys.path.append('folder_name')

您有两种选择:

将另一个文件夹添加到sys.path并按名称导入

1
2
3
4
5
6
import sys
sys.path.append('../a')

import mod1
# you need to add `__init__.py` to `../a` folder
# and rename `1.py` to `mod1.py` or anything starts with letter

或者创建distutils包,这样您就可以进行类似

1
 from ..a import mod1


确保在要从中导入的任何目录中都有一个__init__.py文件,然后有两个选项;

例如,您的代码现在将如下所示:

1
2
3
4
5
6
7
8
9
Game/
   __init__.py
   a/
      __init__.py
      1.py
      ...
   b/
      __init__.py
      2.py
  • 如果您的Game文件夹在您的pythonpath中,您现在可以在2.py中执行from Game.a import 1,或者在1.py中执行from Game.a import 1
  • from ..a import 1为相对进口