[英]Importing a file from a different directory in Python
这是我的两个文件夹结构:
A/B/C/D/E/F.py
A/B/C/G/H/I/test.py
我的test.py
想要导入F.py
的类。 我已经将根目录设置为C
我试过了:
from C.D.F import FClassname
这是行不通的。 消息是
ImportError: No module named C.D.F
我确保所有目录都有__init__.py
文件。 我不想向test.py
添加任何代码。 我想在__init__.py
添加代码,以便将其应用于我将要编写的所有将来的测试文件。
在目录H的__init__.py
中,我编写了以下代码:
import os
import sys
root = os.path.realpath(os.path.join(os.path.dirname(__file__), '../../'))
sys.path.append(root)
我要去哪里错了?
在C
使用此文件结构。
.
|-- D
| |-- E
| | |-- F.py
| | |-- __init__.py
| | `-- __pycache__
| | |-- F.cpython-34.pyc
| | `-- __init__.cpython-34.pyc
| |-- __init__.py
| `-- __pycache__
| `-- __init__.cpython-34.pyc
`-- G
|-- H
| |-- I
| | `-- foo.py
| `-- __init__.py
`-- __init__.py
foo.py
可能是
from D.E import F
F.foo()
使用PYTHONPATH
运行它,包括当前目录( .
),它将是C
$ PYTHONPATH=. python3.4 G/H/I/foo.py
输出:
foo
你可以试试看
C, D, E
创建__init__.py
然后在您的test.py
import sys
sys.path.insert(0, '/path/to/C')
from C.D.E.F import FClassname
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.