【发布时间】:2017-07-31 03:13:21
【问题描述】:
我有以下目录结构:
一个
|
|--B--Hello.py
|
|--C--Message.py
现在如果根目录A的路径不固定,如何将B中的“Hello.py”导入C中的“Message.py”。
【问题讨论】:
标签: python-2.7 path directory python-import
我有以下目录结构:
一个
|
|--B--Hello.py
|
|--C--Message.py
现在如果根目录A的路径不固定,如何将B中的“Hello.py”导入C中的“Message.py”。
【问题讨论】:
标签: python-2.7 path directory python-import
首先我建议将空的__init__.py 文件添加到每个带有python 源的目录中。它将防止许多导入问题,因为这就是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
【讨论】: