繁体   English   中英

从Python中的其他目录导入文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM