You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在test_cli.py中导入main模块?模块导入失败求助

解决main模块导入问题的几种方法

方法一:临时添加项目根目录到Python路径

在test_cli.py开头添加代码,手动将项目根目录(main.py所在目录)加入Python模块搜索路径,就能正常导入main模块:

import sys
from pathlib import Path

# 获取项目根目录(tests目录的上层目录)
project_root = Path(__file__).parent.parent
sys.path.append(str(project_root))

# 后续正常导入并测试
import typer
from typer.testing import CliRunner
from main import main

runner = CliRunner()

def test_cli() -> None:
    result = runner.invoke(main, [])
    assert result.exit_code == 0

if __name__ == "__main__":
    test_cli()

方法二:使用相对导入(需调整运行方式)

如果不想修改路径,可以用相对导入,但需将项目作为包运行:

修改test_cli.py的导入语句:

from .. import main

此时不能直接运行python tests/test_cli.py,必须从项目根目录执行:

python -m pytest tests/test_cli.py
# 或直接运行测试文件
python -m tests.test_cli

方法三:配置为可安装包(推荐长期方案)

在项目根目录创建pyproject.toml文件,将项目规范为可安装包:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "ink-wizard"
version = "0.1.0"
packages = ["template_generators"]

然后安装项目为可编辑模式:

pip install -e .

之后在test_cli.py里就能直接import main,所有模块导入都会正常工作,这是Python项目的标准做法。

注意:你的main.py中调用Invoker.psp22()时用到的mintable、metadata等变量未定义,需补充变量的获取逻辑,否则运行时会报错。

内容的提问来源于stack exchange,提问作者avirajkhare00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:25:17