已安装Python模块仍提示Module Not Found,Ubuntu 22.04 LTS求助
检查Python版本与pip的对应关系
Ubuntu 22.04默认共存Python 3(通常为3.10版本)与Python 2(已停止维护),直接使用python命令大概率调用Python 2,但pip install可能默认关联Python 3,导致安装路径不匹配。执行以下命令确认版本对应关系:- 查看当前Python版本:
python --version/python3 --version - 查看pip关联的Python版本:
pip --version/pip3 --version
若版本不匹配,安装模块时使用对应版本的pip(如pip3 install 模块名),运行脚本时指定Python版本(如python3 脚本名.py)。
- 查看当前Python版本:
排查虚拟环境状态
若你使用了虚拟环境(如venv、conda),模块可能仅安装在虚拟环境内,而当前运行脚本的环境为全局环境。执行echo $VIRTUAL_ENV,若输出为空则说明未激活虚拟环境,需先激活:- venv环境激活命令:
source 虚拟环境目录/bin/activate
激活虚拟环境后再运行脚本,或选择将模块安装至全局环境(不推荐,易引发依赖冲突)。
- venv环境激活命令:
验证模块安装路径是否在Python搜索路径内
运行以下代码查看Python的模块搜索路径:
import sys print(sys.path)
再通过pip show 模块名(或pip3 show 模块名)查看模块的实际安装路径(Location字段),确认该路径是否在sys.path列表中。若不在,可临时添加路径:
import sys sys.path.append("模块安装的Location路径")
或重新安装模块至正确路径。
确认模块安装名与导入名一致
部分模块的PyPI安装名称与代码中的导入名称不同,例如python-dateutil需用import dateutil导入,pyyaml需用import yaml导入。核对你安装的模块名称与脚本中的导入语句是否匹配。排查用户级/系统级安装冲突
若使用pip install --user 模块名安装模块,模块会被放置在用户目录(如~/.local/lib/pythonX.Y/site-packages),但如果用sudo运行脚本,系统会读取系统级路径,导致无法找到用户级安装的模块。解决方案:- 不使用
sudo运行脚本 - 使用
sudo pip3 install 模块名将模块安装至系统级路径
- 不使用
内容的提问来源于stack exchange,提问作者MENTORJJ

