Skip to content

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

原文链接:https://ceshiren.com/t/topic/31943