从 python 中的其他目录导入文件?
Importing files from other directory in python?
我有以下目录结构:
一个
|
|--B--Hello.py
|
|--C--Message.py
现在如果根目录A的路径不固定,如何从B导入"Hello.py"到C的"Message.py"
起初我建议将空 __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
我有以下目录结构:
一个
|
|--B--Hello.py
|
|--C--Message.py
现在如果根目录A的路径不固定,如何从B导入"Hello.py"到C的"Message.py"
起初我建议将空 __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