从tests子目录导入python项目模块

2024-10-03 04:36:50 发布

您现在位置:Python中文网/ 问答频道 /正文

├── ledger
│   ├── __init__.py
│   ├── ledger_data.py
│   └── ledger_model.py
├── main.py
├── sscommon
│   ├── __init__.py
│   └── logging.py
└── tests
    └── test_ledger_data.py

运行test_ledger_data.py时,我需要从ledger_data模块导入类。我现在在test_ledger_data.py中做sys.path.append("../"),或者我必须添加symbolik链接到所有用于tests目录的模块。两种选择似乎都不正确。如何正确操作?你知道吗

如果我只是从项目根目录或tests目录运行文件,我会得到错误:

    from ledger.ledger_data import LedgerData
ImportError: No module named 'ledger'

Tags: 模块pathpytest目录datamodelinit
1条回答
网友
1楼 · 发布于 2024-10-03 04:36:50

您可以在文件夹中创建__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文件中的所有内容导入模块名称空间。你知道吗

相关问题 更多 >