python程序在pycharm正常运行,但在命令行就报错:ModuleNotFoundError: No module named ‘xxx‘

当使用Python运行脚本时出现`ModuleNotFoundError`,可能是模块路径问题或环境不一致。解决方案包括将自写模块目录添加到`sys.path`,或确保运行环境与PyCharm使用的Python版本相同。确保第三方模块在所有所需环境中都已安装。
摘要由CSDN通过智能技术生成

问题背景

当我在pycharm运行自己的程序时,非常顺利,但是用python main.py 这种文件运行方式时,就报如下错误:

ModuleNotFoundError: No module named ‘xxx‘


一、问题一

如果错误中提示的模块是你自己写的模块

其原因是,当我们导入一个模块时:import xxx,默认情况下python解析器会搜索当前目录、已安装的内置模块和第三方模块,搜索路径存放在sys模块的path中。如果path中没有路径,就会报错。你导入的包或者模块,并不是在当前运行python文件的目录下,所以会报找不到模块的错误。

解决方法

将你要导入的模块目录添加到sys的path中:

import sys
# 获取根目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 将根目录添加到path中
sys.path.append(BASE_DIR)

二、问题二

如果错误中提示的模块是你安装好的第三方模块

这种情况往往是由于运行环境不同导致的,拿我遇到的情况举个例子:

我在项目总导入了 import pymysql,然后在pycharm中也能正常运行,但我用
python main.py 提交,就会报错:

ModuleNotFoundError: No module named ‘pymysql‘

其原因是我们在pycharm中和用文件运行时的python环境不一样

我的pycharm是python3.8
在这里插入图片描述

而我在命令行运行时,默认用的时python3.9
在这里插入图片描述
所以,我在pycharm安装的第三方库,在python3.9中是没有的

解决方法

运行时直接写出指定python版本的运行命令,例如:

E:\python\python-3.8\python.exe  main.py --start_time 20220628 --end_time 20220629
出现"ModuleNotFoundError: No module named 'paho'"的错误通常是因为缺少paho模块。要解决这个问题,你可以尝试以下几种方法: 1. 首先,确认你已经正确地安装了paho模块。你可以在命令行运行"pip freeze"命令来查看已安装的模块列表,确保paho模块已经被正确安装。如果没有安装,你可以通过运行"pip install paho-mqtt"来安装它。 2. 如果你已经安装了paho模块,但仍然出现该错误,那么可能是因为你正在使用的Python解释器与你安装paho模块的解释器不一致。在PyCharm中,你可以在"File" -> "Settings" -> "Project: [项目名称]" -> "Project Interpreter"中查看和更改你的Python解释器。 3. 如果你正在使用的是虚拟环境,请确保你已经激活了该虚拟环境,并且在该环境中安装了paho模块。你可以在命令行运行"pip install paho-mqtt"来在虚拟环境中安装paho模块。 4. 如果你仍然无法解决该问题,可以尝试重新安装paho模块。首先,你可以通过运行"pip uninstall paho-mqtt"来卸载已安装的paho模块,然后再运行"pip install paho-mqtt"来重新安装它。 总之,解决"ModuleNotFoundError: No module named 'paho'"的方法包括确认是否正确安装了paho模块,检查使用的Python解释器是否正确,激活虚拟环境并在其中安装paho模块,以及尝试重新安装paho模块。希望这些方法能够帮助你解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [WSL环境中Pycharmpython控制台中报错 ModuleNotFoundError: No module namedxxx‘(WSL+Pycharm环境...](https://blog.csdn.net/qq_33631872/article/details/128248944)[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_1"}}] [.reference_item style="max-width: 50%"] - *2* [Windows下运行python脚本报错“ImportError: No Module named ...”的解决方法](https://blog.csdn.net/weixin_33696106/article/details/85822092)[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_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值