python包chromadb安装失败总结

1,背景:

最近在学习langchain的课程,里面创建自己的知识库的Retrieval模块中,需要用到向量数据库。
所以按照官方的教程(vectorstores),准备使用chroma的向量数据库。
图片来源

2,问题1:pip安装出错

现象

第一步安装python包的时候,出现了下面的错误:

pip install chromadb

Looking in indexes: https://mirror.baidu.com/pypi/simple/, https://mirrors.aliyun.com/pypi/simple/, https://pypi.tuna.tsinghua.edu.cn/simple/
Collecting chromadbDownloading https://mirrors.aliyun.com/pypi/packages/7c/cc/8b822be150323492e1d3c2ae46ccd99ddc9841894afdc41c408ffd68918e/chromadb-0.4.22-py3-none-any.whl (509 kB)
......
Collecting importlib-metadata<7.0,>=6.0 (from opentelemetry-api>=1.2.0->chromadb)Downloading https://mirrors.aliyun.com/pypi/packages/59/9b/ecce94952ab5ea74c31dcf9ccf78ccd484eebebef06019bf8cb579ab4519/importlib_metadata-6.11.0-py3-none-any.whl (23 kB)
Installing collected packages: pypika, mpmath, monotonic, mmh3, flatbuffers, wrapt, websocket-client, uvloop, urllib3, tomli, sympy, python-dotenv, pyasn1, pulsar-client, overrides, opentelemetry-util-http, opentelemetry-semantic-conventions, opentelemetry-proto, oauthlib, importlib-metadata, humanfriendly, httptools, grpcio, googleapis-common-protos, chroma-hnswlib, bcrypt, backoff, asgiref, watchfiles, rsa, pyproject_hooks, pyasn1-modules, opentelemetry-exporter-otlp-proto-common, deprecated, coloredlogs, requests-oauthlib, posthog, opentelemetry-api, onnxruntime, google-auth, build, tokenizers, opentelemetry-sdk, opentelemetry-instrumentation, kubernetes, opentelemetry-instrumentation-asgi, opentelemetry-exporter-otlp-proto-grpc, opentelemetry-instrumentation-fastapi, chromadbAttempting uninstall: urllib3Found existing installation: urllib3 2.0.7Uninstalling urllib3-2.0.7:Successfully uninstalled urllib3-2.0.7
  Attempting uninstall: importlib-metadataFound existing installation: importlib-metadata 7.0.1Uninstalling importlib-metadata-7.0.1:
ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: 'RECORD'
Consider using the `--user` option or check the permissions.
原因分析

看上面的红色的部分,安装的时候,要求importlib-metadata的版本:6.0<=版本<7,但是环境中默认的是7.0.1,所以安装的时候想要把7的版本卸载,安装6的版本,问题出在卸载这里,没有权限卸载。
为什么没有权限卸载?我用的是百度平台的BML codeLab,创建ipynb文件的时候选择的内核如下,所以环境自带了python3的环境。(这个包是python的一个标准库importlib-metadata),猜测可能是作为python环境的一部分, codeLab这边不允许修改。

解决方案

按照出错中的提示(上图出错的黄色的部分):
使用user模式进行python包的安装,正常安装成功。

!pip install --user chromadb

补充:
我有点好奇,使用这个--user和没有使用,有啥区别?
后来发现,两者的位置不同。

  • 没有--user的时候,安装到默认的python包的路径下面。
    可以用pip show pkname(找一个有的包)查看,python包的安装路径
    codelab中默认的路径是:/opt/conda/envs/python35-paddle120-env/lib/python3.10/site-packages
  • 有--user的时候,安装到用户的目录下面,
    通过pip show pkname的命令查看--user模式安装好的包的路径。
    codelab中对应的--user模式下的路径是:
    /home/aistudio/.local/lib/python3.10/site-packages

3,问题2:导入模块失败(ModuleNotFoundError : No module named 'chromadb')

现象

上面安装之后,正准备开开心心继续的时候,发现虽然安装成功(使用pip show能够正常看到包的信息),但是使用Langchain生成数据库的实例的时候,会报错:
原因是在langchain中引入chromadb的模块时候,提示模块不存在。(import chromadb失败)

# 定义一个向量数据库的实例

vectorDB = Chroma(

        collection_name="langchain_store",

        embedding_function=qianfan_embedding_model)

原因分析

python导包的时候,会查找内置模块,以及sys.path中的路径。
确认一下sys.path的设定,里面是没有上面安装的本地用户的路径的,
所以虽然包正常安装,但是import的时候,找不到,所以报错。
 

import sys

print(sys.path)

['/home/aistudio', '/opt/conda/envs/python35-paddle120-env/lib/python310.zip', '/opt/conda/envs/python35-paddle120-env/lib/python3.10', '/opt/conda/envs/python35-paddle120-env/lib/python3.10/lib-dynload', '', '/opt/conda/envs/python35-paddle120-env/lib/python3.10/site-packages']
解决方案

把--user模式下的安装路径加入到sys.path中。
不同的环境下,安装的路径可能有所不同,使用命令[pip show 包名] 查看安装的路径。

sys.path.append('/home/aistudio/.local/lib/python3.10/site-packages')

之后就可以正常import了。

4,后记

这个问题搞了一上午,整体来看,对于pip安装的细节(比如安装路径),以及安装之后,import导入的细节(包是怎么查找的)不是特别清楚,导致调查花了一些时间。
mark一下,也希望分享给有类似问题的小伙伴。

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

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

相关文章

有没有可以多渠道报修的维修管理系统?

以前我们买电视、空调这些电器&#xff0c;如果出了故障&#xff0c;一般都是打电话给门店&#xff0c;然后门店就会派人来修理。有的人则会自己找维修工人来维修&#xff0c;一般也是通过电话报修。不过现在是互联网时代&#xff0c;电话报修效率低下、信息传递不畅、实时跟踪…

mysql死锁排查

查看正在进行中的事务 SELECT * FROM information_schema.INNODB_TRX;字段解释trx_id唯一事务id号&#xff0c;只读事务和非锁事务是不会创建id的trx_state事务的执行状态&#xff0c;值一般分为&#xff1a;RUNNING, LOCK WAIT, ROLLING BACK, and COMMITTING.trx_started事务…

用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表) -- 自动生成 --合并生成后的代码【鱼皮】

一、模块页面功能 1.1 domain 【实体对象】 1.2 mapper 【操作数据库的对象】--> UserMapper 1&#xff09;UserMapper 其实就是我们用来操作数据库的一个对象 2) 继承了mybatis- plus&#xff0c;它会自动帮我们去定义一些增删改查的方法。 继承可以看下图&#xf…

ROS 系列学习教程(总目录)

ROSLearning 一、ROS概览 1.1 ROS简介 To be continued… 1.2 ROS安装 Ubuntu 安装 ROS 详细教程&#xff08;以最后一个ROS1版本Noetic为例&#xff09; 1.3 ROS Hello World ROS创建工作空间添加包并编译 ROS Hello World 1.4 ROS架构 ROS架构&#xff1a;文件系统 …

[数据库] MySQL之MHA高可用

一、MHA相关知识 1.1 什么是mha MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障…

深入理解CRON表达式:时间调度的艺术

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

《作家天地》期刊投稿邮箱投稿方式

《作家天地》是国家新闻出版总署批准的正规文学刊物。对各种流派的作品兼收并蓄&#xff0c;力求题材、形式、风格多样化&#xff0c;适用于发表高品质文学学术作品&#xff0c;科研机构的专家学者以及高等院校的师生等。具有原创性的学术理论、工作实践、科研成果和科研课题及…

javascript 常见工具函数(二)

11.数组等分切片&#xff1a; this.newMapList []; for (var i 0; i < this.mapDataList.length; i 2) {this.newMapList.push(this.mapDataList.slice(i, i 2)); } 12.js做奇偶判断&#xff1a; if (this.mapDataList.length ! 0) {this.mapDataList.length % 2 0 ?…

从0到1入门C++编程——03 内存分区、引用、函数高级应用

文章目录 一、内存分区二、引用三、函数的高级应用1.默认参数2.占位参数3.函数重载 一、内存分区 C程序在执行时&#xff0c;会将内存大致分为4个区&#xff0c;分别是代码区、全局区、栈区和堆区。 代码区用来存放函数体和二进制代码&#xff0c;由操作系统进行管理。 全局区…

js统一公共请求处理与常用工具封装

一个完整的前端项目往往会进行一些必要的抽取公用代码进行封装&#xff0c;这里记录js常用工具及统一的公共请求的封装。 一 2017年 第一版web管理后台在用 web后台管理页面用 /*** Created by hua on 2017/8/24.*/ var requestResult{success :0,failure:1,failureMsg:2 }j…

Ubuntu上使用node搭建本地静态http服务器

1.搭建步骤 1.安装Node.js。首先确保你的Ubuntu系统已经安装了Node.js。如果没有安装&#xff0c;可以通过以下命令进行安装&#xff1a; sudo apt-get update sudo apt-get install nodejs #安装nodejs 2.安装npm。npm是Node.js的包管理器&#xff0c;一般会随着Node.js一…

Minio部署在服务器上,分享图片等文件提示,签名不对

问题描述: 上传没问题 下载没问题 就是分享有问题,签名有问题 找了很多解释,什么nginx代理问题啊,什么端口问题啊 什么防火墙问题啊 都是扯淡,一点用没有 最后发现,我的分享链接是127.0.0.1的地址,并不是我的服务器本机的地址 我访问图片都是要把ip改了再去访问,但是一开始并没…

HttpSession的使用

1 HttpSession 概述 在 Java Servlet API 中引入 session 机制来跟踪客户的状态。session 指的是在一段时间内&#xff0c;单个客户与 Web 服务器的一连串相关的交互过程。在一个 session 中&#xff0c;客户可能会多次请求访问同一个网页&#xff0c;也有可能请求访问各种不同…

【JavaSE】P1~P32 进制,字节,Java代码规范,常量,变量,运算符

目录 IDEA常用快键键和快捷用法一、需要复习的重难点概念1 进制、字节、DOS操作命令语句进制及转化字节DOS系统命令提示符 2 Java 常用代码规范3 常量及常量的打印4 变量数据类型及取值范围变量的概念和使用数据类型转换ASCII码表&#xff08;128种&#xff09;基本数据类型极其…

显示所有中国城市需要多少个汉字?

显示所有中国城市需要多少个汉字呢&#xff1f; 需要3678个汉字&#xff0c;看看我怎么知道的。 第一步&#xff1a;先找到中国的所有城市的名称 去哪里找到中国的所有城市的名称呢&#xff1f; 进入中国天气网&#xff1a;http://www.weather.com.cn/ 使用 F12 打开浏览器的调…

Excelize 入选“2023开源创新榜”优秀开源项目

近日&#xff0c;由中国科协科学技术传播中心、中国计算机学会、中国通信学会、中国科学院软件研究所共同主办&#xff0c;CSDN 承办的 2023 开源创新榜专家评审会在国家科技传播中心成功举办。Excelize 电子表格文档开源基础库入选“2023开源创新榜”优秀开源项目。 评审委员…

SwiftUI 打造一款可收缩的 HStack(二):对齐+ZStack

概览 在上篇 SwiftUI 打造一款可收缩的 HStack(一):“原汤化原食” 博文里,我们讨论了如何用 HStack 自身来实现可收缩的“HStack”。 而在本篇中,我们将尝试利用 SwiftUI 对齐 + ZStack 的方式完成相同的功能。 在本篇博文中,您将学到以下内容: 概览1. SwiftUI 中的对…

商业综合体能源管理系统功能有哪些?能够为企业带来哪些价值?

随着IT行业的迅猛发展&#xff0c;仅仅实现智能控制已无法满足当前绿色低碳发展的要求&#xff0c;随着智能设备的增多&#xff0c;同时也产生了越来越多的信息孤岛。通过信息技术构建能源管理系统&#xff0c;可以实现先进、智能、经济、可行的商业综合体能源管理解决方案。 …

静态网页设计——校园官网(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 使用技术&#xff1a;HTMLCSSJS 主要内容&#xff1a;对学校官网的结构进行模仿&#xff0c;对布局进行模仿。 主要内容 1、首页 首页以多个div对页面进行分割和布局…

解析为什么Go语言要使用[]rune而不是string来表示中文字符

众所周知&#xff0c;Go语言中有以下这些数据类型。但rune32这个go语言特有的数据类型&#xff0c;比较有意思却经常遭到忽视。所以今天探索学习一下这个数据类型的功能、用法。 Go基本数据类型 布尔&#xff1a;bool 字符串&#xff1a;string 整数&#xff1a; int int8 …