python制作env离线使用

处理思路:

编译依赖:在构建机上编译 Python 3.10.11 及其依赖的 OpenSSL 1.1.1(或其他兼容版本)。
集成 OpenSSL:将 OpenSSL 的共享库(libssl.so.1.1、libcrypto.so.1.1)复制到 Python 安装目录的 lib/ 子目录中。
安装应用依赖:使用该 Python 环境的 pip 安装项目所需的第三方包(如 requirements.txt 中定义的依赖)。
打包交付:将整个 Python 安装目录(含标准库、第三方包及 OpenSSL 库)打包为可移植环境,直接部署到目标机器即可运行。

遗留事项:

打包前应清理缓存文件(如 pycache、.pyc、pip 缓存等),以减小体积并避免潜在路径污染。
建议验证 _ssl 和 _hashlib 模块在目标环境中的可用性。

1. 安装完整依赖

yum install -y gcc make zlib-devel bzip2-devel libffi-devel
openssl-devel ncurses-devel sqlite-devel readline-devel
xz-devel tk-devel gdbm-devel perl tar wget

2. 编译 OpenSSL 1.1.1w

cd /tmp
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -xzf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix=/opt/openssl-1.1.1 --openssldir=/opt/openssl-1.1.1 shared zlib
make -j$(nproc)
sudo make install

3. 编译 Python 3.10.11

INSTALL_PREFIX="/root/lee/python3.10.11/python3.10.11"
sudo mkdir -p "$INSTALL_PREFIX"

cd /tmp
wget https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz
tar -xzf Python-3.10.11.tgz
cd Python-3.10.11

./configure
--prefix="$INSTALL_PREFIX"
--with-openssl=/opt/openssl-1.1.1
--with-openssl-rpath=auto
--enable-optimizations
--disable-shared

make -j$(nproc)
sudo make altinstall

4. 安装 patchelf 0.13.1

cd /tmp
wget https://github.com/NixOS/patchelf/releases/download/0.13.1/patchelf-0.13.1.tar.gz
tar -xzf patchelf-0.13.1.tar.gz
cd patchelf-0.13.1
./configure --prefix=/usr/local
make && sudo make install

5. 将 OpenSSL 库复制到 Python lib 目录

cp /opt/openssl-1.1.1/lib/libssl.so.1.1 "$INSTALL_PREFIX/lib/"
cp /opt/openssl-1.1.1/lib/libcrypto.so.1.1 "$INSTALL_PREFIX/lib/"

6. 修改 _ssl.so 和 _hashlib.so 的 RPATH

SSL_SO=$(find "$INSTALL_PREFIX" -name "_ssl.so")
HASHLIB_SO=$(find "$INSTALL_PREFIX" -name "_hashlib
.so")

patchelf --set-rpath '$ORIGIN/../../' "$SSL_SO"
patchelf --set-rpath '$ORIGIN/../../' "$HASHLIB_SO"

7. 验证

ldd "$SSL_SO"
ldd "$HASHLIB_SO"

8. 测试

"$INSTALL_PREFIX/bin/python3.10" -c "import ssl, hashlib; print('OK')"

9. 环境移植使用

将/root/lee/python3.10.11/python3.10.11打包,复制到其他机器,即可实现复用

posted @ 2025-12-17 14:28  瞌睡虫245  阅读(0)  评论(0)    收藏  举报