以下是我的两个文件夹结构:
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)
我哪里错了?
答案 0 :(得分:1)
在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
答案 1 :(得分:0)
你可以试试这个。
__init__.py
C, D, E
然后在test.py
import sys
sys.path.insert(0, '/path/to/C')
from C.D.E.F import FClassname