centos7 python3.13全套安装(可用于离线复制)

#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-Locale-Maketext-Simple-0.21-297.el7.noarch.rpm

wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/perl-Module-Load-Conditional-0.54-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/

相关推荐
小陈的进阶之路2 小时前
Python系列课(5)——数据容器
windows·python
知识领航员2 小时前
2026年推荐6个AI音乐工具
java·人工智能·python·eclipse·django·php·pygame
PieroPc2 小时前
证件裁切拼版工具
python
2401_833033622 小时前
golang如何实现MQTT主题通配符路由_golang MQTT主题通配符路由实现策略
jvm·数据库·python
AI精钢2 小时前
修复 AI Gateway 图片 MIME 类型错误:用魔数检测替代扩展名猜测
网络·人工智能·python·gateway·aigc
m0_596749093 小时前
Golang怎么实现方法集与接口的匹配_Golang如何理解值类型和指针类型实现接口的区别【详解】
jvm·数据库·python
隔壁小红馆3 小时前
隐藏odoo特有
python·odoo17·odoo18
lifewange3 小时前
pytest 找不到文件?直接在 pytest.ini 配置根目录 + 路径(最简单方案)
开发语言·python·pytest
yuanpan4 小时前
Python 桌面 GUI 入门开发:从 tkinter 窗口到简易记事本
开发语言·python