• 安装chromadb遇到的问题与python3升级


    环境: python 3.10 , centos 7.x

    使用 pip3 install chromadb 时,遇到以下问题。

    问题1: gcc

    note: This error originates from a subprocess, and is likely not a problem with pip.
    ERROR: Failed building wheel for chroma-hnswlib
    Failed to build chroma-hnswlib
    ERROR: Could not build wheels for chroma-hnswlib, which is required to install pyproject.toml-based projects

    该问题为gcc 版本较低引起。
    通过:

    gcc -v
    
    • 1

    查看系统gcc版本为

    gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
    
    • 1

    升级 gcc

    # 1、 安装centos-release-scl
    sudo yum install centos-release-scl
    #2 、安装gcc
    sudo yum install devtoolset-11-gcc*
    # 也可以search 有哪些gcc版本。
    # 3、激活
    scl enable devtoolset-11 bash
    
    # 也可以通过以下方式激活
    source /opt/rh/devtoolset-11/enable
    
    # 然后可以安装chromadb
    pip3 install chromadb
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    查看gcc版本:

    gcc version 11.2.1 20220127 (Red Hat 11.2.1-9) (GCC) 
    
    • 1

    注意: 以上只是激活本次会话的gcc11。重新开启终端连接服务器后,gcc还是之前的版本。
    如果要永久激活gcc 11. 可以用gcc11 替换gcc4.8

    #查看gcc位置:
    ll /opt/rh/devtoolset-11/root/bin/gcc
    ll /usr/bin/g++ 
    # 备份原gcc
    mv /usr/bin/gcc /usr/bin/gcc-4.8.5
    mv /usr/bin/g++ /usr/bin/g++-4.8.5
    #链接到新版本:
    ln -s /opt/rh/devtoolset-11/root/bin/gcc /usr/bin/gcc
    ln -s /opt/rh/devtoolset-11/root/bin/g++ /usr/bin/g++
    
    gcc --version
    g++ --version
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    问题2: sqlite3

    RuntimeError: Your system has an unsupported version of sqlite3. Chroma requires sqlite3 >= 3.35.0.

    意思就是服务器的sqlite版本过低。
    通过:

    sqlite3 -version
    
    • 1

    查看系统sqlite版本。
    在sqlite官网 https://www.sqlite.org/chronology.html ,下载3.35版本以上的sqlite源码。
    解压源码文件。

    ./configure --prefix=/usr/local
    make -j4
    make install
    ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
    echo"/usr/local/lib" > /etc/ld.so.conf.d/sqlite3.conf
    # 或者 vim /etc/ld.so.conf.d/sqlite3.conf ,然后填写/usr/local/lib ,保存。
    ldconfig
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    参考:
    CentOS 7 升级 gcc 版本
    https://blog.csdn.net/ll837448792/article/details/131415990
    centos 7.9 下升级自带 sqlite3
    https://www.cnblogs.com/leffss/p/11555556.html

    附: python升级

    环境依赖

    yum install  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc gcc-c++ make zlib zlib-devel libffi-devel -y
    
    • 1

    1、升级 openssl

    去官网下载安装包:https://www.openssl.org/source。
    如:https://www.openssl.org/source/openssl-1.1.1w.tar.gz
    解压后安装:

    ./config --prefix=/usr/local/openssl
    make 
    make install
    
    • 1
    • 2
    • 3

    替换旧版本

    # 备份
    mv /usr/bin/openssl /usr/bin/openssl.old
    mv /usr/lib64/openssl /usr/lib64/openssl.old
    mv /usr/lib64/libssl.so /usr/lib64/libssl.so.old
    # 创建链接
    ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
    ln -s /usr/local/openssl/include/openssl /usr/include/openssl
    ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so
    echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
    ldconfig -v  #显示正在扫描的目录及搜索到的动态链接库
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    查看系统的openssl版本:

    openssl version
    
    • 1

    2、升级python版本

    去python官网https://www.python.org/downloads/下载合适的python版本。

    #编译安装
    ./configure --prefix=/usr/local/soft/python3 --with-openssl=/usr/local/openssl --with-openssl-rpath=auto 
    make -j4
    make install
    
    # 创建链接
    ln -s /usr/local/soft/python3/bin/python3   /usr/bin/python3
    ln -s  /usr/local/soft/python3/bin/pip3    /usr/bin/pip3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    Git GUI使用笔记
    港联证券:“保险+期货”快速落地生花 涉及品种累计达18个
    MySQL学习笔记
    LeetCode-772. Basic Calculator III
    反编译字节码分析java包装类型和引用类型及装箱与拆箱
    9.DesignForManufacture\CreateArtwork...
    C语言指针,深度长文全面讲解
    Https握手过程
    有哪些音频转文字的软件可以批量操作?
    Java面试必问之面向对象“多态”
  • 原文地址:https://blog.csdn.net/a1368783069/article/details/132863315