报错
在写python程序的时候,经常会出现如下报错:
ModuleNotFoundError: No module named ‘XXX’
报错原因:import的module找不到,出现此问题的原因有很多,可以尝试如下解决方案:
原因与解决方法
- 可能是XXX包没有安装,打开终端,输入如下指令:
pip install XXX
- 文件夹中存在XXX模块,但import时报错,可能是需要设置PYTHONPATH环境变量,打开终端,输入如下指令:
export PYTHONPATH="${PYTHONPATH}:PATH_TO_CENTERPOINT"
- 自建的module包找不到,可能是没有__init__.py文件,需要在module文件夹下,创建一个空的__init__.py文件
cd XXX && touch __init__.py
- 安装的第三方包找不到module,重新安装第三方包。若不行,可能需要卸载整个conda环境,重新安装。
pip uninstall XXX
pip install XXX
-
安装的第三方module包的版本不对,查询和自身环境相匹配的的版本进行安装。
-
自建的包名与第三方安装的包名相同导致import存在二义性,此时的解决方式是给自己的文件夹换个名字,使得与第三方包名不冲突。
-
在IDE中执行python程序,编译器会自动把当前项目的根目录加入到包查找路径中,可以理解为加到PYTHONPATH下,所以直接执行是没有问题的。但是在cmd或者terminal控制台中直接使用python相关命令来执行程序,不会自动将当前项目加入到PYTHONPATH环境变量下,如果涉及到import其他文件夹下的变量就会报类似ImportError: No module named xxx这样的错误。
解决方法是使用sys.append()命令把报错包的所在文件夹路径加入到PYTHONPATH。 -
检查拼写是否有误。
-
可能是当前所处的conda环境有误,或者应该使用python2运行程序而错误地使用了python3,或者应该使用python3运行程序而错误地使用了python2等等。