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

求助:解决Python中ModuleNotFoundError(找不到mainfunction模块)问题

解决ModuleNotFoundError: No module named 'mainfunction'问题

问题根源

你的项目结构中,mainfunction.py位于项目根目录,而测试文件tests_app.py在tests子目录下。Python默认只会把当前运行脚本所在目录加入模块搜索路径,因此无法找到上层目录的mainfunction模块。

具体解决方案

方案1:修改导入语句并将项目转为可导入包

  1. 在项目根目录下创建空文件__init__.py,将项目标记为Python可导入包。
  2. 修改tests/tests_app.py中的导入语句为相对导入:
from ..mainfunction import *
  1. 从项目根目录的上层目录执行pytest:
cd path/to/directory-containing-project
pytest project/tests/tests_app.py

方案2:动态添加项目根目录到模块搜索路径

在tests/tests_app.py的最开头添加以下代码,手动将项目根目录加入Python的模块搜索路径:

import sys
import os
# 获取当前脚本所在目录的上层目录(即项目根目录)
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

from mainfunction import *

修改后,无论你在VSCode中直接运行测试文件,还是在项目根目录下执行pytest命令,都能正常找到mainfunction模块。

方案3:设置PYTHONPATH环境变量

在终端中先将项目根目录添加到PYTHONPATH,再运行测试:

  • Windows命令行:
set PYTHONPATH=C:\magang\bimbingan\pak roly\zaky-function-main
pytest tests/tests_app.py
  • Linux/macOS终端:
export PYTHONPATH=/path/to/zaky-function-main
pytest tests/tests_app.py

额外提示

你的mainfunction.py中存在两个同名的test_add函数,这会导致pytest运行时出现警告,建议修改其中一个函数名(例如改为test_add_parametrized),避免冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:50:25