簡體   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