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

测试自定义Python包时无法跨目录导入decorators模块求助

解决Python测试中无法导入同级模块的问题

问题原因

你的tests目录和decorators目录是同级的,Python默认只会把当前脚本所在目录和系统默认路径加入模块搜索路径,所以找不到上层的decorators包。

解决方法

方法1:临时修改sys.path(快速测试用)

在decorator1_test.py的最开头添加以下代码,把项目根目录(power_decos)加入Python的模块搜索路径:

import sys
from pathlib import Path
# 获取当前脚本的父目录的父目录,也就是项目根目录
sys.path.append(str(Path(__file__).parent.parent))

# 现在就能正常导入了
from decorators import decorator1

方法2:用pip可编辑模式安装包(长期开发推荐)

这种方法能让Python把你的decorators包当作全局可导入的模块,适合长期开发场景:

  1. 在power_decos根目录下创建setup.py文件,内容如下:
from setuptools import setup, find_packages

setup(
    name="power_decos",
    version="0.1.0",
    packages=find_packages(exclude=["tests*"]),
)
  1. 打开终端,进入power_decos目录,运行以下命令:
pip install -e .

安装完成后,你在任何地方(包括tests目录的脚本里)都可以直接执行from decorators import decorator1,不会再报错。

方法3:设置PYTHONPATH环境变量(一次性运行用)

在运行测试脚本前,把项目根目录加入PYTHONPATH环境变量:

  • Linux/macOS终端:
export PYTHONPATH=/你的项目路径/power_decos:$PYTHONPATH
# 然后运行测试,比如
pytest tests/decorator1_test.py
  • Windows命令提示符:
set PYTHONPATH=C:\你的项目路径\power_decos;%PYTHONPATH%
pytest tests/decorator1_test.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 02:22:07