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

  • ModuleNotFoundError是什么意思?
  • Pycharm的虚拟环境
  • 为什么虚拟环境会造成ModuleNotFoundError?
  • 怎么解决由虚拟环境造成的ModuleNotFoundError?
  • 总结

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

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

  1. ModuleNotFoundError No module named ‘xxx‘可能的解决方案大全

    "ModuleNotFoundError: No module named 'xxx'"这个报错是个非常常见的报错,几乎每个python程序员都遇到过,导致这个报错的原因也非常多, ...

  2. ModuleNotFoundError: No module named ‘xxx‘可能的解决方案大全

    "ModuleNotFoundError: No module named 'xxx'"这个报错是个非常常见的报错,几乎每个python程序员都遇到过,导致这个报错的原因也非常多, ...

  3. ModuleNotFoundError: No module named xxx 的原因和解决办法(附带新大陆)

    #PS:要转载请注明出处,本人版权所有 #PS:这个只是 < 我自己 >理解,如果和你的 #原则相冲突,请谅解,勿喷 ModuleNotFoundError: No module name ...

  4. python程序在命令行执行提示ModuleNotFoundError: No module named ‘XXX‘ 解决方法

    python程序在命令行执行提示ModuleNotFoundError: No module named 'XXX' 解决方法 参考文章: (1)python程序在命令行执行提示ModuleNotFo ...

  5. 关于在pycharm下提示ModuleNotFoundError: No module named 'XXX' 的一种可能

    在pycharm下出现"ModuleNotFoundError: No module named 'XXX' "提示时, 在网上找大部分的解决方案是重新在pycharm里安装对应的 ...

  6. 导入自己模块包导入报错:ModuleNotFoundError: No module named ‘xxx‘解决方法 晓物智联

    导入自己模块包导入报错:ModuleNotFoundError: No module named 'xxx'解决方法 文章来源于:http://www.52phm.cn/blog/detail/28 ...

  7. python命令行执行 .py文件提示ModuleNotFoundError: No module named 'XXX' 解决方法

    今天用Jenkins执行.py文件时,总是提示ModuleNotFoundError: No module named 'XXX',百思不得其解.但是在PyCharm中却是能执行成功的,想了想然后在终 ...

  8. ModuleNotFoundError: No module named 'xxx'; 'xxx' is not a package

    ModuleNotFoundError: No module named 'xxx'; 'xxx' is not a package 错误: ModuleNotFoundError: No modul ...

  9. 控制台执行python脚本报错问题:ModuleNotFoundError: No module named ‘xxx‘

    报错日志: Traceback (most recent call last): File "/Users/xxx/xxx/Project/python/xxx/xxx_req/xxx.py ...

最新文章

  1. canvas绘制的文字如何换行
  2. distinct吃亏记
  3. SQL Server移除事务日志后sys.master_files依然存在记录问题
  4. Python零碎知识(3):对文件的基本操作
  5. 阿里大规模应用Flink踩过的坑:如何大幅降低HDFS压力?
  6. 解决从github上拉取代码慢的问题
  7. 【数据竞赛】“达观杯”文本智能处理挑战赛5
  8. jQuery中的表单对象属性过滤选择器(四、八)::enabled、:disabled、:checked、:selected...
  9. 怎么改变github的用户名字,身份?
  10. Maven项目错误解决小结
  11. python虚拟人脸生成_GitHub - 597111463/seeprettyface-generator-yellow: 这是一个用StyleGAN训练出的黄种人人脸生成器...
  12. java对象模型 指令_JVM-Java内存模型-20200217(示例代码)
  13. attachEvent 与 addEventListener的使用
  14. jQuery 停止动画
  15. KISSsoft03-2018F SP6,计算和重新分析机器零件
  16. STM32——EMWIN对话框(十二)
  17. oracle基本参数调整优化
  18. 苹果4如何添加时间插件_Pr快速批量制作和添加字幕,节省时间还不用插件的做法...
  19. 再补充三种内网穿透的方法:ngrok 、ngrok.cc、IOEE
  20. 情态动词+have+done用法整理

热门文章

  1. Keil警告warning: #223-D: function “memcpy” declared implicitly
  2. 互联网之父发布去中心化平台Solid:一个推翻巨头垄断的天才手法
  3. android自动滑屏解锁,如何删除/绕过滑动屏幕以解锁Android设备-万兴恢复专家
  4. 实验39:CCNA综合实验训练1(期末考试)
  5. 计算机辅助药物设计总结
  6. jvm学习笔记(一)----jvm简史
  7. (图形学相关数学知识)-2.对基本概念的理解(一)
  8. 《微机原理与接口技术》知识点总结
  9. 这个中国人首次在国际上报道了一个新的致病基因,老外follow他的研究发了Nature...
  10. C++头文件<bits/stdc++.h>详解