python安装好了某个包但是仍报错ImportError: No module named xxx的解决方法及思路

news2025/7/12 22:38:48

  这是一个应该比较常见的问题,下面首先讲一下该类问题的一般解决 思路,然后再进行一个自我debug的过程描述。

1 解决思路

  出现该问题的根本原因是,当前使用的python环境,和已经安装了包的python环境不是同一个。解决问题一般可以根据如下顺序进行思考:

  1. 首先检查一下当前的conda环境,是否确实是你已经安装了这个包的环境。这可以通过执行conda list命令来查看,如果列出的包里面有你需要的包,那么跳过这一步;如果没有,那么切换到对应的正确虚拟环境下,或者就装一下这个包吧,一般pip install
  2. 如果不是上面的问题,检查一下当前python命令,使用的是哪里的python。这可以通过执行type python或者type python3来进行查询。如果是conda里的python,那么其路径一般为/opt/conda/bin/python3(正确路径),而系统的python一般是/usr/bin/python3
      

2 解决过程

  博主这里出现的问题是,要import cv2的时候,报错:

ImportError: No module named cv2

  于是,我执行conda list,列出了当前conda环境下安装好的环境,可以看出,我是安装好opencv-python(即cv2)了的:
在这里插入图片描述
  既然包已经安装了,但是python却找不到,那么,我们查一下当前使用的python到底是哪个,执行如下命令:

type python3

  我这里的输出为:

python3 is hashed (/usr/bin/python3)

  而如果查找的是python,也获得了类似的输出:

python is /usr/bin/python

  这就有问题了,这个python应该是系统自带的python环境,并不是我们当前conda环境下的,所以就会出现找不到conda已经安装的包的问题了。那么问题的原因找到了,我又回想了一下,我昨天好像刚把/usr/bin这个路径给添加进环境变量里了。执行如下命令,查看当前环境变量:

vim ~/.bashrc

  文件末尾的内容如下所示,我确实将conda路径和系统路径都加进去了:

export PATH=$PATH:/opt/conda/bin/
export PATH=$PATH:/usr/bin/

  之前这么添加的原因是,不加进去的话,使用pip、conda、python的时候都需要把这个路径前缀给带上,感觉很麻烦(当然,这个问题可能只是因为我在docker环境里)。解决办法就很简单了,可以把/usr/bin/这个环境变量去掉,也可以把两个环境变量都去掉,然后保存,执行:

source ~/.bashrc

  环境变量的修改就生效了。下面,让我们再执行python3,就不会再说找不到已经安装的包了(如果报错找不到python,或者发现python还是usr路径下的,那么,在执行的时候带上路径前缀吧,比如/opt/conda/bin/python3)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/396171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数组、指针总结【面试题】

文章目录0. 补充知识数组笔试题1. 一维数组1.1 字符数组1.1.1 sizeof1.1.2 strlen1.2 二维数组2. 指针笔试题0. 补充知识 在进入数组与指针的练习时,我们先来复习以下以下的知识点,这可以帮助我们更好的理解下面练习 数组是一组能存放相同类型的类型的元…

数据库的查询

数据库的查询 一、知识要点&#xff1a; 1.SELECT语句的一般格式 SELECT [ ALL|DISTINCT ] [TOP N [PERCENT] ] <目标列表达式> [别名] [&#xff0c;<目标列表达式> [别名] ]… FROM <表名或视图名> [ 别名 ][&#xff0c;<表名或视图名> [ 别名 ] ]…

JavaScript DOM API的使用

文章目录一. 什么是DOM二. 最常用的DOM API1. 选中页面元素2. 操作元素的属性2.1 事件概念2.2 获取/修改元素内容计数器2.4 获取/修改元素属性点击图片切换2.5 获取/修改表单元素属性表单计数器全选/取消全选按钮2.6 获取修改样式属性点击文字放大实现夜间/日间模式的切换3. 操…

【C++】反向迭代器

文章目录一、什么是反向迭代器二、STL 源码中反向迭代器的实现三、reverse_iterator 的模拟实现四、vector 和 list 反向迭代器的实现一、什么是反向迭代器 C 中一共有四种迭代器 – iterator、const_iterator、reverse_iterator 以及 const_reverse_iterator&#xff0c;其中…

基层治理四平台解决方案

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用。部分资料内容&#xff1a; 省基层治理体系“四个平台”采用“1N"统分结合的建设模式:即统筹建设“1"个浙江政务服务网基层业务协同平台(以下简称“协同平台”)&#xff0c;同步改造、整合、推广“N…

【java】Collection源码阅读(JDK 8)

package java.util;import java.util.function.Predicate; import java.util.stream.Stream; import java.util.stream.StreamSupport;/*** 集合层次结构的根接口&#xff0c;一个集合表示一组对象&#xff0c;称为元素* JDK不提供任何该接口的直接实现&#xff0c;JDK提供实现…

Elasticsearch 核心技术(六):内置的 8 种分词器详解 + 代码示例

❤️ 博客主页&#xff1a;水滴技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; &#x1f338; 订阅专栏&#xff1a;大数据核心技术从入门到精通 文章目录一、内置分词器1. Standard&#xff08;标准分词器&#xff09;英文示例中文示例…

八.异常控制流ECF

1.异常异常位于硬件和OS的交界部分系统调用是为应用程序提供到OS的入口点的异常进程和信号位于应用和OS的交界部分非本地跳转是ECF的应用层形式1.1 异常表异常是控制流中的突变&#xff0c;用来响应处理器状态的某些变化状态变化称为事件系统中可能的每种类型的异常都分配了一个…

虹科教您 | 在Windows环境下安装PCAN View及通讯测试指南

应用简介 PCAN-View软件是一款简化的CAN监视软件&#xff0c;可用于显示、发送、和记录CAN数据通讯。报文可手动和定期发送&#xff0c;用户可设置比特率。在处理期间显示总线系统错误和CAN硬件的存储器过满。示踪功能可用于记录和保存CAN数据通讯。本文档的作用在于&#xff…

软件测试的几个关键步骤,你需要知道

记得2年前刚毕业的时候听说了软件测试这个行业&#xff0c;当时也去百度仔细进行了一番搜索&#xff0c;评价基本千篇一律的看好。 看好的原因在于&#xff0c;专家认为未来的互联网市场用户体验至上&#xff0c;而产品质量与用户体验有紧密的联系&#xff0c;自从近年产品经理…

eyoucms field 获取channelartlist标签的字段值

【基础用法】 标签&#xff1a;field 描述&#xff1a;获取channelartlist标签里的字段值&#xff0c;field标签只能在channelartlist标签里使用。 用法&#xff1a; {eyou:channelartlist typeid栏目ID typeson row20} <a href{eyou:field nametypeurl /}>{eyou:fi…

SCCM 应用程序管理

Microsoft System Center Configuration Manager &#xff08;SCCM&#xff09; 被认为是管理 Microsoft 应用程序的示例性工具。它可以无缝地进行补丁管理和软件部署。但处理第三方应用程序不是它的游戏。因此&#xff0c;除了补丁管理之外&#xff0c;Patch Connect Plus 还为…

接口里面可以写实现方法吗【可以】 、接口可以多继承吗【可以】

比如下面这道题&#xff1a; 问: 接口里面可以写方法吗&#xff1f; 答: 当然可以啊&#xff0c;默认就是抽象方法。 . 问&#xff1a; 那接口里面可以写实现方法吗&#xff1f; 答&#xff1a; 不可以&#xff0c;所有方法必须是抽象的。 . 问&#xff1a; 你确定吗&#xff1…

Java面试题--SpringRefresh流程

Spring refresh 概述 Spring 容器是一个管理 bean 的容器&#xff0c;可以创建、注入和管理 bean 及其依赖关系。Spring 容器可以根据应用程序配置和运行时条件创建、初始化和销毁 bean。refresh() 函数是 Spring 容器中的一种功能&#xff0c;可以重新加载和刷新容器中的配置…

什么?同步代码块失效了?-- 自定义类加载器引起的问题

一、背景 最近编码过程中遇到了一个非常奇怪的问题&#xff0c;基于单例对象的同步代码块似乎失效了&#xff0c;百思不得其姐。 下面给出模拟过程和最终的结论。 二、场景描述和模拟 2.1 现象描述 Database实现单例&#xff0c;在 init 方法中使用同步代码块来保证 data不…

Revit中图纸要怎么布局呢?

1、明确图纸布局原则。 2、在图纸上锁定视图的位置 在图纸上放置视图(或明细表)并根据需要对其定位后&#xff0c;可以将其锁定到位&#xff0c;这样就不会在无意中移动它。如果想要解锁视图&#xff0c;单击锁定图标即可&#xff0c;如图1所示。 3、在图纸上旋转视图 可以在图…

imx6 usb增强信号强度

USB信号 参考&#xff1a;官方文档 USB信号完整性取决于许多因素&#xff0c;如电路设计、PCB布局、堆叠和阻抗。每个产品可能彼此不同&#xff0c;因此客户需要微调参数&#xff0c;以获得最佳的信号质量。 测试板已经路由出两个USB端口:一个OTG1&#xff0c;一个主机。每个端…

xcode14安装swift package设置github账户token

这里写目录标题登录github账户,复制token打开xcode添加github账户选择swift package登录github账户,复制token 登录github点击上面菜单自己的头像,settings->Developer settings->Personal access tokens->Tokens (classic)->Generate new token (classic) Note名…

Spring 响应式编程-读书笔记

序言 大家好&#xff0c;我是比特桃。本文为《Spring 响应式编程》的读书笔记&#xff0c;响应式技术栈可以创建极其高效、易于获取且具有回弹性的端点&#xff0c;同时响应式可以容忍网络延迟&#xff0c;并以影响较小的方式处理故障。响应式微服务还可以隔离慢速事务并加速速…

判断推理之图形推理

考点一动态位置变化&#xff08;一&#xff09;平移1.特征&#xff1a;图形在平面上的移动&#xff0c;图形本身的大小和形状不发生改变。2.方向&#xff1a;直线&#xff08;上下、左右、斜对角线&#xff09;&#xff0c;绕圈&#xff08;顺时针、逆时针&#xff09;3.距离&a…