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

时间:2013-07-26 07:51:50

标签: python python-2.7 python-import

这是我的目录树

Game/
   a/
      1.py
      ...
   b/
      2.py

在2.py中我希望从1.py中显示导入功能。首先我将两个文件保存在同一文件夹中没有问题。但是如何从其他位置导入?

3 个答案:

答案 0 :(得分:3)

尝试使用imp

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

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

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

foo.method()
希望那就是你要找的东西!

你也可以试试这个:

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

答案 1 :(得分:1)

您有两种选择:

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

导入
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包,而不是像

那样进行相对导入
 from ..a import mod1

答案 2 :(得分:0)

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

e.g。您的代码现在看起来像这样:

Game/
   __init__.py
   a/
      __init__.py
      1.py
      ...
   b/
      __init__.py
      2.py
  1. 如果您的Game文件夹位于您的PYTHONPATH中,您现在可以在from Game.a import 1 2.py中执行1.py,反之亦然from ..a import 1
  2. {{1}},relative import