├── ledger
│ ├── __init__.py
│ ├── ledger_data.py
│ └── ledger_model.py
├── main.py
├── sscommon
│ ├── __init__.py
│ └── logging.py
└── tests
└── test_ledger_data.py
运行ledger_data
时,我需要从test_ledger_data.py
模块导入类。我目前在sys.path.append("../")
中执行test_ledger_data.py
,或者我必须为用于tests
目录的所有模块添加符号链接。这两个选项似乎都不对如何正确地做到这一点?
如果我只是从项目根目录或tests
目录运行该文件,我会收到错误:
from ledger.ledger_data import LedgerData
ImportError: No module named 'ledger'
答案 0 :(得分:1)
您可以在文件夹中创建__init__.py
文件,并使用以下内容导入父目录:
parent_dir = os.path.abspath(os.path.join(os.path.abspath(__file__), os.pardir))
sys.append(parent_dir)
这使用os.path
根据您的文件位置查找目录。
更新:创建上述__init__.py
并将其保留在tests/
文件夹中。
然后,在test_ledge_data.py
放在文件头from __init__ import *
;这会将init文件中的所有内容导入模块命名空间。