首页 > 其他分享 > ModuleNotFoundError: No module named 'xxx'可能的解决方案

ModuleNotFoundError: No module named 'xxx'可能的解决方案

时间:2023-02-11 12:01:11浏览次数:49  
标签:__ named xxx __. No py module init path

为了解析导入的模块,Python 检查内置库、安装的模块和当前项目中的模块等位置。如果无法解析该模块,则会抛出ModuleNotFoundError

以下的几种情况会出现ModuleNotFoundError及解决方法:

1.module包没安装
# XXX为module名
pip3 install XXX #从服务器设定源中搜索安装
pip3 install XXX -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/ #从清华的源中搜索安装
2.忘了import

module安装了但是在python文件中没有import

ABC.py
#! /usr/bin/env python3

import requests
import json
import yaml
import paramiko
import time
3.module拼写错误

安装或者在.py文件中导入时module名拼写错误,如大小写有误、字母有误、module包名有误

4.自建module没有__init__.py文件

在本module下的所有文件建立一个索引放在当前路径下的__init__.py文件。如果一个文件夹下没有__init__.py文件,不会被当做一个module

对于缺少__init__.py文件这种情况,还有一种报错形式是:

ImportError: attempted relative import with no known parent package

解决:检查一下待导入的包的根目录是否存在一个__init__.py文件,没有的话建一个空的__init__.py文件即可(注意:不光要检查待导入的包根目录是否存在__init__.py文件,还需要检查当前程序所在文件夹是否存在这个文件)。

5.安装的第三方module包的版本不对

以上三种情况排查玩可能是module包版本不对。需要先卸载原来pip 安装的包,然后安装一个指定版本的包。比如python3不兼容 2.0版本及以上的DBUitls包,需要安装1.x的版本才行。

pip uninstall DBUtils
pip install DBUtils==1.3
6.自定义的包名与安装的包名相同,导致import包的时候导错了包

这种情况不经常发生,但是一旦发生,非常难找到原因。以上方法试过后不妨检查一下自己自建module是否和第三方module包重名。

7.没设置PYTHONPATH或者

有的人可能会说为什么别人也没设置这个环境变量,为啥他就能顺利执行,我就不行。这么说吧,每个人的电脑的开发环境不一样,开发环境这种东西永远带有点玄学的意味,所以。。。

#尝试再次安装确保module包已安装,以DBUtils为例
% pip install DBUtils==1.3
//⚠️提示 Requirement already satisfied: DBUtils==1.3 in ./venv/lib/python3.9/site-packages (1.3)
# 声明环境变量,注意路径要和安装module包后提示路径一致
% export PYTHONPATH=./venv/lib/python3.9/site-packages:$PYTHONPATH
#若还不行,查看pip路径,也加入环境变量中
% pip -V
pip 21.1.3 from /Users/lch/python_project/learn_python/venv/lib/python3.9/site-packages/pip (python 3.9)
export PYTHONPATH= /Users/lch/python_project/learn_python/venv/lib/python3.9/site-packages:$PYTHONPATH
8.自建的module包所在路径不在PYTHONPATH下

标签:__,named,xxx,__.,No,py,module,init,path
From: https://blog.51cto.com/u_15932009/6050176

相关文章