python专治各种ImportError: No module named 'XXX' 不服,解析其中原因

作为新手经常遇到ImportError: No module named 'XXX'这个错误,有时候甚至一段代码在终端能跑,在sublimeText就会报这个错,或者在终端能跑,systemd启动就不行的问题。这个错误就是找不到XXX模块,引起这个错误原因很多,下面来解析一下。

1,没安装

如果没安装的话,确实会找不到。这时候你需要用命令


pip3 show XXX

来确认你是否已经安装了该模块,没安装的用以下命令安装


sudo pip3 install XXX

2,执行Python的版本

确认自己用相应的python版本来执行相应的module,想知道自己编译器或者终端默认执行的python版本,可以通过以下代码打印出来。


import sys

print(sys.executable)

保持安装与执行的python版本的一致性。

3,模块加载的路径

当import一个模块的时候(例如redis),解析器先从内置模块里面寻找,内置模块没有redis,那就去sys.path里面提供的路径数组里面查找,我们可以将sys.path打印出来看看包含哪些路径。


import sys

print(sys.path)

其中第一个是你当前python脚本的路径。如果你要import的module的路径并没有出现在sys.path的数组里面,那么必然会出现ImportError。解决办法有三个:

1,当你在编译器的时候,可以直接用以下代码,将模块路径临时添加进sys.path


import sys

sys.path.append("你的模块路径")

2,在终端的时候可以用以下代码临时加进去


export PYTHONPATH=$PYTHONPATH:"你的模块路径"

以上两个方法都是临时的,第二个方法只要关闭终端,sys.path就会还原

3, 在当前sitepackages里面添加.path文件

首先在编译器或者终端里找出当前的sitepackages


import site

print(site.getsitepackages())

然后在此路径下创建一个.path文件,文件名随意,.path文件内容为,你要添加的module的路径。

以上就是解决ImportError: No module named 'XXX'的方法总结。

你可能感兴趣的:(python专治各种ImportError: No module named 'XXX' 不服,解析其中原因)