从python中的其他目录导入文件?

时间:2017-03-09 23:00:01

标签: python-2.7 path directory python-import

我有以下目录结构:

一个
|
| --B--Hello.py
|
| --C--Message.py

现在如果根目录A的路径没有修复,我该如何导入" Hello.py"从B到" Message.py"在C.

1 个答案:

答案 0 :(得分:2)

首先,我建议使用python源将空__init__.py文件添加到每个目录中。它将防止导入的许多问题,因为这是packages在Python中的工作方式:

在你的情况下,它应该是这样的:

A
├── B
│   ├── Hello.py
│   └── __init__.py
├── C
│   ├── Message.py
│   └── __init__.py
└── __init__.py

让我们说Hello.py包含函数foo:

def foo():
    return 'bar'

并且Message.py尝试使用它:

from ..B.Hello import foo

print(foo())

使其工作的第一种方式是让Python解释器完成他的工作并handle package构建:

~ $ python -m A.C.Message

另一个选项是使用以下代码将Hello.py文件添加到list of known sources

# Message.py file

import sys, os
sys.path.insert(0, os.path.abspath('..'))

from B.Hello import foo

print(foo())

在这种情况下,您可以使用

执行它
~/A/C $ python Message.py