Linux中Python已经安装了某个模块却报错?(ModuleNotFoundError: No module named)和pip list 和 sudo pip list 的差异.

目录

背景

工作流

结束


背景

在使用glibc_all_in_one管理glibc时用到了requests这个模块.报了这个ModuleNotFoundError: No module named.本次的python是linux内置的python,非anaconda进行管理的.这个问题是我在用WSL2跑python脚本时遇到的,相信记录下来有一定意义.

工作流

先通过

python --version

查看是否有python,没有安装就行 

若是找不到.试试

python3 --version

或者使用(和上面同理)

which python (which python3)

Linux中Python已经安装了某个模块却报错?(ModuleNotFoundError: No module named)和pip list 和 sudo pip list 的差异._第1张图片

这时候可以使用pip 去下载软件包.没有pip 则apt 安装之.

通过 

pip install requests

去安装模块.(requests是我所需要的模块)

通过pip list 去查看pip已经安装的

Linux中Python已经安装了某个模块却报错?(ModuleNotFoundError: No module named)和pip list 和 sudo pip list 的差异._第2张图片

 通过 sudo pip list 去查看则会发现不一样.

Linux中Python已经安装了某个模块却报错?(ModuleNotFoundError: No module named)和pip list 和 sudo pip list 的差异._第3张图片

sudo pip list  与pip list 显示安装的软件包不同.

什么原因导致了我发现了这个问题?

在新建了一个目录下,这个新建的目录没有读写权限,我在该目录下有一个脚本,使用./update 去执行这个脚本(这个脚本涉及到了对文件的读写) 运行发现是没有权限在该目录下进行写操作.于是果断加 sudo .然后报ModuleNotFoundError , 于是 pip install requests ,通过pip list 发现该模块已经装上了,然后继续 sudo ./update 执行还是报ModuleNotFoundError. 试试./update 则报没有权限在该目录下进行写操作。于是我给该目录加了权限 执行 

chmod 777 目录名

再./update 发现正常运行了.于是思路为什么sudo  ./update 用不了.sudo 能解决该目录的权限问题,那么问题就是sudo ./update 确实找不到我们 pip 安装的模块.于是发现pip list 和 sudo pip list 的区别.同理 在终端下执行 python 和 sudo python 也是同理的,前者能找到pip 安装的包,后者则不能. 

终端下调用python

终端下调用 sudo python 

Linux中Python已经安装了某个模块却报错?(ModuleNotFoundError: No module named)和pip list 和 sudo pip list 的差异._第4张图片

这与上面的pip list 和sudo pip list 对应上了.

查找资料如下

Linux中Python已经安装了某个模块却报错?(ModuleNotFoundError: No module named)和pip list 和 sudo pip list 的差异._第5张图片

推测pip install 则是为当前用户安装包.

而通过sudo pip install  则是为root 用户安装软件包.

通过 ~/.local/lib/pythonxxx/site-package确实查到了pip install安装的包.

我用sudo pip install requests(在 pip install requests 之后)  成功为root用户安装了包,

Linux中Python已经安装了某个模块却报错?(ModuleNotFoundError: No module named)和pip list 和 sudo pip list 的差异._第6张图片

结束

问题得到解决.ModuleNotFoundError 可能是没有安装包,也可能是当前用户下安装了,但却用了root用户权限去执行python(而root用户下并没有pip 安装的包).

参考链接

pip列表和sudo pip列表显示不同的包版本-腾讯云开发者社区-腾讯云 (tencent.com)

你可能感兴趣的:(Linux,python,linux,pip)