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的根路径。