python包chromadb安装失败总结

2024-01-04 23:12

本文主要是介绍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一下,也希望分享给有类似问题的小伙伴。

这篇关于python包chromadb安装失败总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/570898

相关文章

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创