python项目在cmd中运行出现ImportError: No module named xxx总结

网上关于这个问题已经有很成熟的解答,这里做一个总结提醒自己,也算提醒后来人。

比如,我有一个python项目,目录结构如下:

python_project

    util

        a.py

        b.py

    mail

        c.py

程序运行入口是a.py,也就是说,在项目中,使用pycharm只需要在a.py右键run就可以驱动程序运行。但是,如果在cmd中运行python a.py可能会出现ImportError: No module named mail的问题。

一、首先需要解释一下为什么在pycharm里面可以运行,而在cmd中就会报错的问题。

pycharm是一个优秀的python编辑器,它会自动把当前项目下的文件自动引入到需要的地方,也就是说,a.py中依赖的所有本项目在pycharm中都会默认自动引入,但是,cmd没有这么智能,命令行只能识别配置好的环境变量和当前文件路径,至于当前文件所依赖的本项目其他文件不会自动引入,因此,在命令行中调用a.py会报引入包错误。

二、既然我们已经知道问题出在哪里了,那么,如何解决这个问题呢。

解决的方法也不复杂,就是在程序的入口也就是a.py中将本项目中依赖的其他文件路径添加进path环境变量即可。具体怎么操作呢,一个比较好的解决思路是在本程序(a.py)开头输入这么一行信息

import sys

print(sys.path)

通过这两条语句,就会把当前文件(a.py)所有依赖的路径打印出来,然后再在当前文件最前面添加这么一条语句

sys.path.append("刚刚打印出来的依赖的路径")

打印出几个就需要append几下。这个地方需要注意,并不是说所有打印出来的都需要append,跟python环境变量相关的路径可以不用append,比如python.exe所在的目录(因为在path环境变量已经添加了)

三、很开心的在cmd中运行python  a.py,程序就可以跑起来了。

声明:

本文并非作者原创,是在前人的基础上整理出来的,参考链接https://blog.csdn.net/liujingqiu/article/details/79213457,在此谢谢此博主。

猜你喜欢

转载自blog.csdn.net/none123java321/article/details/82116092