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

问题说明

两个目录:testcases和api ,目的是想在testcases中的test_001.py中调用api/test_api的一个类变量。在如下图导入类后,命令行运行:pytest -vs testcases 报错:ModuleNotFoundError: No module named ‘api’ , 意思很明显,找不到api模块pycharm终端运行: ModuleNotFoundError: No module named ‘api‘问题解决_第1张图片

解决思路

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

项目根路径:“C:\Users\jam96\PycharmProjects\test20220417”可以通过右击项目名,copy path 得到的,如下图所示:
pycharm终端运行: ModuleNotFoundError: No module named ‘api‘问题解决_第2张图片
**但是!!!**由于我自己也是个萌新,就直接在test_001.py文件,Test_jxd()类上面加上了sys.path.append(r"C:\Users\jam96\PycharmProjects\test20220417")

运行还是报错,如下图所示:
pycharm终端运行: ModuleNotFoundError: No module named ‘api‘问题解决_第3张图片
其实是顺序搞反了,应该先加环境变量路径再导包!!!
改变了编码顺序后再次pytest -vs testcases ,成功了,哦耶✂
pycharm终端运行: ModuleNotFoundError: No module named ‘api‘问题解决_第4张图片
但存在一个问题,代码不够灵活 再进阶一点,改变编码如下:

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

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

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

打印结果:既是项目路径

C:\Users\jam96\PycharmProjects\test20220417

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

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

你可能感兴趣的:(测试,pycharm,python,ide)