关于运行scrapy项目时提示 ModuleNotFoundError: No module named 'pymongo‘的解决方案
1问题描述
今天使用scrapy框架写爬虫并且使用mongodb存储结果时,在powershell中运行scrapy crawl demo发现报错,报错内容是No module named 'pymongo‘,即,没有找到pymongo模块,但是笔者确确实实的下载过这个模块,那么到底是怎么回事呢?
2问题分析
首先,需要指出的是,一定是环境问题。是否是多python版本共存?笔者的电脑里同时存在着Python2.7和python3.6,当初是安装anaconda时,默认安装了前者,后者是工作学习需要,同时Python2将被淘汰,安装了Python3,导致当前笔者的电脑里同时存有两个环境,而,笔者先前将pymongo安装在了python36中,并没有安装在Python27中,导致在powershell中运行scrapy时默认使用了python2.7,所以导致了上述报错,那么到底是不是呢?
3验证假设
验证假设最好的方法就是去尝试,这里笔者先贴出powershell中的错误:
这里先尝试在默认的Python27环境中同样也下载这个pymongo模块,再运行一遍,看看是否报错,结果如下:
发现能够正确运行了,看来是这个问题,即直接在终端运行scrapy程序会默认使用conda的Python默认路径,即我这里是Python2.7。
4其他
这里使用cmd终端方法来试试,因为powershell算是cmd升级版本,笔者经过测试(先卸载Python2.7的pymongo再安装)分别测试发现,确实是这个conda的默认环境导致的问题,但是在笔者测试的过程中,还发现了一个powershell问题,即不能够像cmd切换环境:如下分别是在cmd和powershell中的切换Python环境的调试
conda activate python版本号 我这里是36,因为当初安装conda时默认的27 conda activate Python36
发现成功的切换环境,但是在powershell中就不可以
因此,这里需要注意,但是既然在cmd中可以切换环境,那么因为我最开始的scrapy是在python36中写的,出错原因是powershell只认识默认的Python27版本,而我在Python27中没有安装pymongo,在Python36中安装了这个模块,那么我在cmd中切换成Python36后再运行scrapy文件不就可以吗?
实践出真知:
确实可行
5总结
很多人因为工作学习需要,会在电脑中同时存在多个Python版本,
(1)在powershell运行scrapy文件程序时,会默认使用conda默认的环境,如果该默认环境中没有装有对应的第三方模块时,就会出现类似的找不到模块的错误,因此可以在默认的环境下也安装一样的模块,同时继续使用powershell启动;
(2)由于笔者在上面分析中发现,powershell无法切换环境,如果不非要使用powershell,可以在终端cmd中,切换Python解释器后,因为pymongo安装在Python36中了,切换后就可以直接运行。
总之,如果没有多版本共存问题,就不会出现本文问题;同时如果powershell可以切换版本也会节省很多debug时间。
- 点赞
- 收藏
- 分享
- 文章举报
- 关于spyder莫名其妙的出错并且不能运行还报了错误:ModuleNotFoundError: No module named 'PyQt5.QtWebEngineWidgets'
- 有效解决windows10安装好Appium-Python-Client后,pycharm运行时提示ModuleNotFoundError: No module named 'appium'
- pycharm运行时提示ModuleNotFoundError: No module named 'appium'
- jupyter运行出错,提示 “ ModuleNotFoundError: No module named 'IPython.core' ” 的解决方法
- 如何使用python命令直接运行项目(使用Pycharm正常运行,使用命令报错)ModuleNotFoundError: No module named 'XXXX'
- Pycharm中引用本地文件py失败,显示红色波浪线,运行时提示ModuleNotFoundError: No module named 'XXXX'解决办法
- 使用Scrapy时调试出错-ModuleNotFoundError: No module named 'win32api'
- ModuleNotFoundError: No module named 'scrapy'
- python3.6.0 win10 64位 scrapy ModuleNotFoundError: No module named 'win32api' 问题解决
- 安装suds提示ModuleNotFoundError: No module named 'client'
- window python提示ModuleNotFoundError: No module named 'requests'的解决办法
- ModuleNotFoundError: No module named 'pandas' 解决方案
- 关于ModuleNotFoundError: No module named 'urllib3'解决
- 树莓派安装opencv调用cv2时提示ModuleNotFoundError: NO module named 'cv'的解决方法
- 关于在centos下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named '_ctypes'的解决办法
- centos7+python3.6下执行firewall-cmd命令提示“ModuleNotFoundError:no module named ‘gi’ ”
- subline3运行出错:ModuleNotFoundError: No module named 'Xlrd'
- python命令行执行 .py文件提示ModuleNotFoundError: No module named 'XXX' 解决方法
- 关于在centos下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named '_ctypes'的解决办法...
- Tensorflow:21个项目(解决问题'export' 不是内部或外部命令 和 ModuleNotFoundError: No module named 'object_detection')