ModuleNotFoundError:No module named xxx 罪魁祸首竟是虚拟环境

ModuleNotFoundError是什么意思?

ModuleNotFoundError:No module named XXX,这个错误是我们初学Python的朋友经常会遇到的,出现这个错误的原因是我们想要使用的模块XXX不存在。如果是第三方模块,并且没有安装过,那么通过pip install XXX将其成功安装便不会再报这个错误。然而,有太多朋友像我的这位学生一样,明明已经安装了,但是仍然报 No module named XXX,这是为什么??!!
学生的疑惑
在这里插入图片描述
已经安装过的模块却找不到,主要有2个原因会造成这个问题。我们今天主要来分析下第一个原因——pycharm的虚拟环境

Pycharm的虚拟环境

刚接触Python的朋友,会优先选择Pycharm作为集成开发环境。但是你是否了解Pycharm默认会为我们的每一个项目创建一个单独的虚拟环境,而且每个虚拟环境有自己单独的python解释器?
当我们在pycharm中新建一个项目时(本文所用pycharm为community版),我们看到的是如下界面:
在这里插入图片描述
其实,点开左上角的小三角,你就会发现里面大有玄机!pycharm为我们的项目创建了一个虚拟环境! 目的是分离开各个项目,使其互相不干扰。然而,对于我们初学者来说,编写的那一个个小小的项目完全没有分离的必要!
在这里插入图片描述

为什么虚拟环境会造成ModuleNotFoundError?

首先明确以下3点:
1. 要运行Python代码,需要使用python解释器——python.exe。我们安装python,主要就是安装解释器和一些内置模块。
2. 我们从命令行窗口输入 pip install module_name时,是将模块安装到了python解释器中。
3. pycharm的每个虚拟环境里都有自己单独的python.exe解释器。

基于以上3点,你是不是已经明白原因了?安装了模块的python.exe与虚拟环境中使用的python.exe不是同一个!!!所以找不到已经安装的模块!!!

怎么解决由虚拟环境造成的ModuleNotFoundError?

答案很简单:初学者不要使用虚拟环境
虚拟环境帮助我们分隔不同项目,使其解释器互不干扰。如果不是本机同时使用多个版本的python或者项目要求隔离,那么就不要创建虚拟环境了。
在这里插入图片描述

总结

讲课时我会跟学生说,报错了一定要仔细读报错信息,从中要获得两个信息:1.出了什么错误 2.哪里出了错误。对于本文中的例子,我们从报错信息中得知pymysql这个模块不存在,但是我们明确的知道这个模块已经安装了,那么就要往模块的背后找,是谁在使用模块?是解释器,那么是不是解释器使用的不对了?或者是不是我的模块没有安装到正确的解释器里?再结合对pycharm的了解,进而就可以发现真正的错误原因。

程序的debug不是一蹴而就的,需要我们有良好的基础,有过硬的基本功才能以不变应万变。还在学习编程基础的朋友,请认真对待,因为它值的!

  • 59
    点赞
  • 158
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
当出现"ModuleNotFoundError: No module named 'PIL'"错误时,表示Python程序中调用了一个名为PIL的模块,但是该模块并没有被正确安装。这个错误通常是由于缺少所需的库或包导致的。 解决这个问题的方法是安装PIL模块,你可以按照以下步骤进行操作: 1. 使用命令行或终端打开Python的包管理工具(如pip)。 2. 运行以下命令来安装PIL模块:pip install Pillow 3. 如果你使用的是旧版本的Python(如Python 2.x),则需要运行以下命令来安装PIL模块:pip install PIL 4. 等待安装完成后,重新运行你的程序。 通过这些步骤,你应该能够解决"ModuleNotFoundError: No module named 'PIL'"错误,并且成功导入PIL模块。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [已解决ModuleNotFoundError: No module named ‘PIL](https://blog.csdn.net/yuan2019035055/article/details/126322206)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python pyautogui模块实现鼠标键盘自动化方法详解](https://download.csdn.net/download/weixin_38547887/14849946)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值