## 安装依赖
RUN apt-get update && apt-get install -y \
software-properties-common\
wget \
curl \
gnupg2 \
lsb-release \
ca-certificates \
software-properties-common
RUN add-apt-repository -y ppa:deadsnakes/ppa && apt-get update
## 卸载原python及其依赖
RUN if [ -x "$(which python3.10)" ]; then \
echo "Removing Python 3.10 binaries..."; \
rm -rf $(which python3.10); \
fi && \
echo "Removing Python soft links..." && \
if [ -x "$(which python3)" ]; then rm -f $(which python3); fi && \
if [ -x "$(which pip)" ]; then rm -f $(which pip); fi && \
if [ -x "$(which pip3)" ]; then rm -f $(which pip3); fi
RUN echo "Cleaning up Python files..." && \
rm -rf /usr/local/lib/python3.10 \
/usr/local/include/python3.10 \
/usr/local/bin/python3.10* \
/usr/local/bin/pip3.10* \
~/.local/lib/python3.10 \
/usr/local/bin/python3 \
/usr/local/bin/pip \
/usr/local/bin/pip3
## 安装新python及其依赖
RUN echo "Install python..." && \
apt-get install -y python3.10 python3.10-distutils python3.10-venv && \
ln -sf /usr/bin/python3.10 /usr/local/bin/python3 && \
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
RUN python3 get-pip.py && rm -rf get-pip.py && \
python3.10 -m pip install --upgrade jupyter
## 支持jupyter也许需要运行:
pip install platformdirs tornado prometheus_client jinja2 python-dateutil jsonschema pyyaml anyio httpx
## ModuleNotFoundError: No module named 'rpds.rpds' 参考:https://stackoverflow.com/questions/78348119/modulenotfounderror-no-module-named-rpds-rpds
pip uninstall rpds && pip uninstall rpds-py
pip install rpds && pip install rpds-py==0.18.1
# 安装sqlite3==3.35.0
## 卸载原sqlite3
apt-get remove sqlite3
## 源码编译
### 下载源码并解压
wget https://www.sqlite.org/2021/sqlite-autoconf-3350000.tar.gz && tar -xzvf sqlite-autoconf-3350000.tar.gz
### 编译安装
cd sqlite-autoconf-3350000 && ./configure && make && make install
## 查看安装版本
sqlite3 --version
## 查看与python的版本是否一致
import sqlite3
print(sqlite3.sqlite_version)
### 不一致的3种解决方案
#### 解决方案1,环境变量有效:
find /usr -name "libsqlite3.so*"
'''
/usr/local/lib/libsqlite3.so.0.8.6
/usr/local/lib/libsqlite3.so.0
/usr/local/lib/libsqlite3.so
'''
export LD_LIBRARY_PATH=/usr/local/lib:$/usr/local/lib/libsqlite3.so
vi ~/.bashrc
source ~/.bashrc
#### 解决方案2,重新编译python暂未尝试:
# 安装SQLite的开发库
sudo apt-get install libsqlite3-dev
# 使用正确的 SQLite 版本重新编译 Python
wget https://www.python.org/ftp/python/3.x.x/Python-3.x.x.tgz
tar -xvzf Python-3.x.x.tgz
cd Python-3.x.x
./configure --enable-optimizations
make && make install
#### 解决方案3,利用二进制pysqlite3替代:
pip install pysqlite3
import pysqlite3 as sqlite3
print(sqlite3.sqlite_version)
# 安装 open-webui 注意仅支持python3.11
pip install open-webui
## ImportError: cannot import name 'cygrpc' from 'grpc._cython' (/usr/local/corex/lib64/python3/dist-packages/grpc/_cython/__init__.py)
pip install --upgrade grpcio
## ModuleNotFoundError: No module named 'regex._regex'
pip install regex==2023.12.25
## ImportError: cannot import name '_tiktoken' from partially initialized module 'tiktoken' (most likely due to a circular import)
pip install --upgrade tiktoken
## ModuleNotFoundError: No module named '_cffi_backend'
apt-get update && apt-get install libffi-dev
pip uninstall cffi
pip install cffi ##cffi==1.17.1
# 启动open-webui
open-webui serve