#ssl sqlite 的依赖库的复制(******整套的核心) ##########################################
PY_PREFIX="/data/disk1/python3"
mkdir -p "${PY_PREFIX}/lib"
cd "${PY_PREFIX}/lib"
2. 复制 OpenSSL 和 SQLite 库
cp /usr/local/openssl/lib/libssl.so.1.1 "${PY_PREFIX}/lib/"
cp /usr/local/openssl/lib/libcrypto.so.1.1 "${PY_PREFIX}/lib/"
cp /usr/local/lib/libsqlite3.so.0.8.6 "${PY_PREFIX}/lib/"
ln -sf "libssl.so.1.1" "libssl.so"
ln -sf "libcrypto.so.1.1" "libcrypto.so"
ln -sf "libsqlite3.so.0.8.6" "libsqlite3.so"
ln -sf "libsqlite3.so.0.8.6" "libsqlite3.so.0"
export LD_LIBRARY_PATH="{PY_PREFIX}/lib:{LD_LIBRARY_PATH}"
上文为关键节点,下文为流水记账
进入window for linux
powershell
wsl -d CentOS7 # 进入
wsl --shutdown # 退出
C:\Users\data 映射 /mnt/c/Users/data
下载python gcc ssl(最好ssl sqlite 直接安装在python安装目录中 )
#!/bin/bash
set -e
mkdir -p /data/offline_py313/{rpm,src}
cd /data/offline_py313/rpm
yum install -y yum-utils
yumdownloader --resolve \
gcc gcc-c++ make cmake zlib-devel bzip2-devel openssl-devel \
ncurses-devel readline-devel tk-devel gdbm-devel \
db4-devel libpcap-devel xz-devel libffi-devel wget epel-release
sqlite-devel 用wget下载
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/perl-ExtUtils-MakeMaker-6.68-3.el7.noarch.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/perl-Params-Check-0.38-2.el7.noarch.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/perl-IPC-Cmd-0.80-4.el7.noarch.rpm
rm
cd /data/offline_py313/src
wget https://ftp.gnu.org/gnu/gcc/gcc-11.2/gcc-11.2.tar.gz
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
wget https://github.com/openssl/openssl/releases/download/openssl-3.1.7/openssl-3.1.7.tar.gz
wget https://mirrors.cloud.tencent.com/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gz
他自己会自动重试多次 可能成功 302的情况下
wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz
wget https://release-assets.githubusercontent.com/github-production-release-asset/7634677/b4c6e1f3-d928-4de0-a502-fc8dae2adf1e?sp=r\&sv=2018-11-09\&sr=b\&spr=https\&se=2026-04-27T19%3A06%3A14Z\&rscd=attachment%3B+filename%3Dopenssl-1.1.1w.tar.gz\&rsct=application%2Foctet-stream\&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0\&sktid=398a6654-997b-47e9-b12b-9515b896b4de\&skt=2026-04-27T18%3A05%3A52Z\&ske=2026-04-27T19%3A06%3A14Z\&sks=b\&skv=2018-11-09\&sig=m0FjGy3SWRlcCFS3YrOprdrMS5%2FKkF0Flu6L%2B2IBVKo%3D\&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc3NzMxNDgwNiwibmJmIjoxNzc3MzE0NTA2LCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.sr4HvQY7UU8j5qql-OsbTQoJq7qcu15jFXenP7S3s_8\&response-content-disposition=attachment%3B filename%3Dopenssl-1.1.1w.tar.gz\&response-content-type=application%2Foctet-stream
wget https://mirrors.aliyun.com/python-release/source/Python-3.13.13.tgz
wget https://www.sqlite.org/2016/sqlite-autoconf-3150200.tar.gz
echo "资源下载完毕,打包命令:tar -zcvf offline_py313.tar.gz /data/offline_py313"
##########python的安装###############-----------------------------------------------------------
#!/bin/bash
set -e
统一目录定义
cd /data/offline_py313/
cd /data/disk1/
BASE_DIR=(cd "(dirname "$0")";pwd)
RPM_DIR="${BASE_DIR}/rpm"
SRC_DIR="${BASE_DIR}/src"
命令行设置变量 不能有空格
[root@WZ-20230818MFPD Python-3.13.13]# SSL_PREFIX="/usr/local/openssl"
[root@WZ-20230818MFPD Python-3.13.13]# echo "${SSL_PREFIX}"
/usr/local/openssl
固定安装路径
GCC_PREFIX="/usr/local/gcc11"
SSL_PREFIX="/usr/local/openssl11"
PY_PREFIX="/data/disk1/python3"
########################################
1. 离线安装系统依赖RPM
########################################
echo -e "\033[32m===== 安装系统依赖RPM =====\033[0m"
cd "${RPM_DIR}"
rpm -ivh *.rpm --nodeps --force
rpm -ivh rpm/perl-IPC-Cmd-0.80-4.el7.noarch.rpm --nodeps --force
########################################
2. 编译安装 GCC 11.2
########################################
echo -e "\033[32m===== 编译安装 GCC11 =====\033[0m"
cd "${SRC_DIR}"
rm -rf gcc-11.2
tar -zxf gcc-11.2.0.tar.gz
cd gcc-11.2.0
./contrib/download_prerequisites
mkdir -p build && cd build
../configure \
--prefix="${GCC_PREFIX}" \
--enable-checking=release \
--enable-languages=c,c++
make -j$(nproc)
make install
写入环境变量
cat >> /etc/profile.d/custom_env.sh <<EOF
export PATH={GCC_PREFIX}/bin:\\PATH
export LD_LIBRARY_PATH={GCC_PREFIX}/lib64:\\LD_LIBRARY_PATH
EOF
source /etc/profile.d/custom_env.sh
ln -sf ${GCC_PREFIX}/bin/gcc /usr/bin/gcc
ln -sf ${GCC_PREFIX}/bin/g++ /usr/bin/g++
scl enable devtoolset-11 bash # 临时切换到 gcc-11
永久
echo "source /opt/rh/devtoolset-11/enable" | sudo tee -a /etc/profile
source /etc/profile
gcc --version
########################################
3. 编译安装 OpenSSL 1.1.1w
######################################## /data/offline_py313/src
echo -e "\033[32m===== 编译安装 OpenSSL1.1.1 =====\033[0m"
cd "${SRC_DIR}"
rm -rf openssl-1.1.1w
tar -zxf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix="${SSL_PREFIX}" shared zlib
./config --prefix="/usr/local/openssl" shared zlib # 绝对路径(正确)
make -j$(nproc)
make install
cat >> /etc/profile.d/custom_env.sh <<EOF
export PATH="{SSL_PREFIX}"/bin:\\PATH
export LD_LIBRARY_PATH="{SSL_PREFIX}"/lib64:\\LD_LIBRARY_PATH
EOF
source /etc/profile.d/custom_env.sh
ln -sf "${SSL_PREFIX}"/bin/openssl /usr/bin/openssl
/usr/bin/openssl version
cat >> /etc/profile.d/custom_env.sh <<EOF
export PATH=/usr/local/openssl/bin:\$PATH
export LD_LIBRARY_PATH=/usr/local/openssl/lib64:\$LD_LIBRARY_PATH
EOF
source /etc/profile.d/custom_env.sh
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
########################################
4.1. 编译安装 sqlite 15
安装目录:/data/disk1/python3
########################################
tar xvf sqlite-autoconf-3150200.tar.gz
cd sqlite-autoconf-3150200
./configure --prefix=/usr/local # 指定安装路径
make
sudo make install
/usr/local/bin/sqlite3 --version # 检查版本
sqlite3 --version # 检查版本
########################################
4. 编译安装 Python3.13.13
安装目录:/data/disk1/python3
########################################
echo -e "\033[32m===== 编译安装 Python3.13.13 =====\033[0m"
echo -e "\033[32m===== 确认依赖环境信息,可能会被删=====\033[0m"
/usr/bin/openssl version # 确认ssl 版本为1.1.1w
gcc --version # 确认gcc 版本为11
/usr/local/bin/sqlite3 --version # 确认sqlite3 版本为3.44>3.7
cd "${SRC_DIR}"
rm -rf Python-3.13.13
tar -zxf Python-3.13.13.tgz
cd Python-3.13.13 # make clean #清理编译
cp /data/offline_py313/src/resource.cpython-313-x86_64-linux-gnu.so /data/offline_py313/src/Python-3.13.13/Modules/resource.cpython-313-x86_64-linux-gnu.so
预先创建安装目录 /data/disk1/python3/bin/python3.13
mkdir -p "${PY_PREFIX}"
./configure \
--prefix="${PY_PREFIX}" \
--with-openssl="${SSL_PREFIX}" \
--enable-loadable-sqlite-extensions \
--with-system-ffi \
--enable-shared \
--enable-optimizations \
LDFLAGS="-L/usr/local/lib -Wl,-rpath=/usr/local/lib" \
CPPFLAGS="-I/usr/local/include"
LDFLAGS CPPFLAGS 用于指定sqlite
make -j$(nproc) # make -j1
make altinstall
grep -i sqlite config.log # 查询sqlite相关日志(报错信息)Python-3.13.13/config.log
/data/disk1/python3/bin/python3.13 -c "import sqlite3; print(sqlite3.sqlite_version)" # 输出3.44
/data/disk1/python3/bin/python3.13 -c "import ssl; print(ssl.OPENSSL_VERSION)" # 输出1.1.1
/data/disk1/python3/bin/python3.13 -c "import requests; print(requests.OPENSSL_VERSION)" # 输出1.1.1
/data/disk1/python33/bin/python3.13 -c "import ssl; print(ssl.OPENSSL_VERSION)" # 输出1.1.1
########################################
5. 软链接 & 环境变量
########################################
echo -e "\033[32m===== 配置Python环境变量 =====\033[0m"
cat >> /etc/profile.d/custom_env.sh <<EOF
export PATH={PY_PREFIX}/bin:\\PATH
EOF
source /etc/profile.d/custom_env.sh
固定执行路径
主程序:/data/disk1/python3/bin/python3.13
ln -sf {PY_PREFIX}/bin/python3.13 {PY_PREFIX}/bin/python
ln -sf {PY_PREFIX}/bin/pip3.13 {PY_PREFIX}/bin/pip
########################################
6. 全套验证
########################################
echo -e "\033[32m===== 安装完成 环境验证 =====\033[0m"
gcc -v | head -n2
openssl version
echo "Python 路径:$(which python)"
python -c "
import sqlite3, ssl
print('✅ sqlite3 正常, 版本:', sqlite3.sqlite_version)
print('✅ ssl 模块正常')
print('✅ Python 安装目录:', file)
"
#ssl sqlite 的依赖库的复制(******整套的核心) ##########################################
PY_PREFIX="/data/disk1/python3"
mkdir -p "${PY_PREFIX}/lib"
cd "${PY_PREFIX}/lib"
2. 复制 OpenSSL 和 SQLite 库
cp /usr/local/openssl/lib/libssl.so.1.1 "${PY_PREFIX}/lib/"
cp /usr/local/openssl/lib/libcrypto.so.1.1 "${PY_PREFIX}/lib/"
cp /usr/local/lib/libsqlite3.so.0.8.6 "${PY_PREFIX}/lib/"
ln -sf "libssl.so.1.1" "libssl.so"
ln -sf "libcrypto.so.1.1" "libcrypto.so"
ln -sf "libsqlite3.so.0.8.6" "libsqlite3.so"
ln -sf "libsqlite3.so.0.8.6" "libsqlite3.so.0"
export LD_LIBRARY_PATH="{PY_PREFIX}/lib:{LD_LIBRARY_PATH}"
python的依赖包的下载
/data/disk1/python3/bin/python -m pip install pysqlite3-binary -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install kafka-python -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install Flask -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install numpy -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install pandas -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install pycryptodome -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install pyecharts -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install python-dateutil -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install requests -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install Cython -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install SQLAlchemy -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install utils -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install Werkzeug -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install mysql-connector-python -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install apscheduler -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install pigar -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip install pipreqs -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
/data/disk1/python3/bin/python -m pip list --format=freeze > requirements.txt # 生成依赖文件
python的依赖包的 下载离线版本
/data/disk1/python3/bin/python -m pip download \
-r requirements.txt \
-d ./ \
--no-binary=:all: \
--extra-index-url https://mirrors.aliyun.com/pypi/simple \
--timeout 60 \
--retries 5
python 打包
cd /data/disk1
tar -zcvf python3.tar.gz python3 #打包压缩 149M/512M;解压后未生成同名嵌套文件夹
cp python3.tar.gz /mnt/c/Users/data/
python 部署
cd /data/disk1ll
tar -xvf python3.tar.gz
/data/disk1/python3/bin/python --version
/data/disk1/python3/bin/python -c "import sqlite3;import ssl;import sys; print(sys.version,'\r\n',sqlite3.sqlite_version,'\r\n',ssl.OPENSSL_VERSION)"
tar -zcvf offline_py313.tar.gz offline_py313 #打包压缩 离线版原始全套(备用 意义不大)
cp offline_py313.tar.gz /mnt/c/Users/data/