pycharm终端运行: ModuleNotFoundError: No module named ‘api‘问题解决

这篇博客介绍了在Python项目中遇到`ModuleNotFoundError`的问题及解决方法。作者通过添加项目根路径到系统环境变量,解决了test_001.py无法导入api模块的错误。文中详细解释了os和sys模块的使用,以及如何动态获取当前文件的上级目录并添加到sys.path。最终,作者提供了一种更灵活的代码实现,使得项目在不同环境中都能正确运行。
摘要由CSDN通过智能技术生成

问题说明

两个目录:testcases和api ,目的是想在testcases中的test_001.py中调用api/test_api的一个类变量。在如下图导入类后,命令行运行:pytest -vs testcases 报错:ModuleNotFoundError: No module named ‘api’ , 意思很明显,找不到api模块在这里插入图片描述

解决思路

在网上找了一些资料,大意都是把当前项目的根目录加到系统环境变量。然后再执行

项目根路径:“C:\Users\jam96\PycharmProjects\test20220417”可以通过右击项目名,copy path 得到的,如下图所示:
在这里插入图片描述
**但是!!!**由于我自己也是个萌新,就直接在test_001.py文件,Test_jxd()类上面加上了sys.path.append(r"C:\Users\jam96\PycharmProjects\test20220417")

运行还是报错,如下图所示:
在这里插入图片描述
其实是顺序搞反了,应该先加环境变量路径再导包!!!
改变了编码顺序后再次pytest -vs testcases ,成功了,哦耶✂
在这里插入图片描述
但存在一个问题,代码不够灵活 再进阶一点,改变编码如下:

import os
import sys
root_path=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(root_path)
from api.test_api import Test_gyy

执行结果如下图,不会报错,哦耶✂
在这里插入图片描述
至于代码含义:
os,sys都是python内置的模块,直接:import 导包即可
os.path.abspath(file):获取当前文件的绝对路径
os.path.dirname():得到文件的目录
os.path.dirname(os.path.abspath(file)):也就是代表着得到当前文件的目录.具体用法如下所示:
在这里插入图片描述
这也是为什么需要在解决题主遇到的问题是使用了两次os.path.dirname

print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

打印结果:既是项目路径

C:\Users\jam96\PycharmProjects\test20220417

sys.path.append(dir):表示把dir追加到环境变量

问题到此解决,任何时间开始学习都不晚,加油,陌生人!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值