【无标题】

# "ModuleNotFoundError: No module named 'xxx'"这个报错原因也非常多,以下为原因和解决方案

#### 1.module包没安装
#### 2.忘了import
#### 3.没有__init__.py文件
#### 4.package包的版本不对
#### 5.自定义的包名与安装的包名相同,导致import包的时候导错了包
#### 6.没设置PYTHONPATH或者
#### 7.自建的module包所在路径不在PYTHONPATH下
#### 8.不恰当的使用了相对导入
下面是每种情况分别的解决方案:
1、module包没安装
使用场景: pip安装的第三方的包找不到

这个原因比较常见,解决办法就是pip install相应的包即可。如果不确定是否安装了这个包,使用下面的命令查找报警的那个包名,如果有输出结果,说明存在这个包,否则说明不存在这个包。

```bash
pip list | grep xxx   #把xxx替换成你的包名即可
```

如果在pip install的过程中提示包找不到,没有这个版本的包,可能是需要加上内置源,比如想要下载公司内部的包,那肯定需要加上公司的内置源才能找到相应的包。内置源的的使用方式加上-i参数即可。

```bash
pip install xxx -i https://xxx.xx.org/simple

 比如下面是清华的源

 https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/
```

2、忘了import
使用场景: pip安装的第三方的包找不到、自建的module包找不到

module安装了但是没有import,这个原因也经常碰到,比如使用了datetime对象, 但是没有导入datetime包。解决方案同样非常简单,import 相应的包即可。比如下面的案例:

```bash
import os
import sys
import time
import datetime
```

这种情况最容易出现在从别处copy了一段了代码,但是没有把所有用到的module导入进来。

3、没有__init__.py文件
使用场景: 自建的module包找不到

因为python在解释包的时候会给本文件夹也就是本module下的所有文件建立一个索引放在当前路径下的__init__.py文件中,如果没有module的文件索引,我们即使import了指定的包,解释器还是找不到这个module下的文件的,因而我们一般会在每个文件夹下建一个空的__init__.py文件。如果一个文件夹下没有__init__.py文件,不会被当做一个module。

解决方案: 如果这个包是你自己写的,不妨检查一下待导入的包的根目录是否存在一个__init__.py文件,没有的话建一个空的__init__.py文件即可 (注意:不光要检查待导入的包根目录是否存在__init__.py文件,还需要检查当前程序所在文件夹是否存在这个文件)。如果这个包是pip install来的,那基本上可以忽略这种可能了,继续尝试下面的原因吧。

```bash
对于缺少__init__.py文件这种情况,还有一种报错形式是:ImportError: attempted relative import with no known parent package
```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值