ModuleNotFoundError No module named 'xxx'
问题
原因
- allure 文件命名与第三方库冲突
- 自建的 module 包所在路径不在 PYTHONPATH 下
解决方案
比如:
你的项目下叫做 learn_python, 下面是你的项目根目录下的文件结构。
├──README.md
├──__init__.py
├──conf
│ ├── __init__.py
│ ├── offline_conf.py # 本地运行配置文件
│ └── online_conf.py # 线上运行配置文件
└──server # 启动服务文件夹
├── __init__.py
└── launch.py
在运行 launch.py 时报警 conf 这个 module 找不到,这个时候就应该通过 sys.append()
命令把 conf 所在文件夹的路径(注意是 conf 所在文件夹的路径,不是 conf 的路径),也就是 learn_python 的根路径添加到 PYTHONPATH 中,下面是实现方案的代码。
import sys
import logging
import os
# 把当前文件所在文件夹的父文件夹路径加入到PYTHONPATH
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from conf.online_conf import *
os.path.abspath(__file__)
获取到的是 launch.py 的绝对路径;os.path.dirname(os.path.abspath(__file__))
获取到的是 launch.py 所在文件夹的也就是 server 的根路径
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
获取到的是 server 所在文件夹也就是 learn_python 的根路径。