本文以centos7.9为例
安装编译python
1、创建文件夹用于放下载的压缩包
mkdir -p /usr/local/mydev/python
2、解压python3.11.0
tar -zxvf Python-3.11.0.tgz
3、准备编译环境
yum -y install gcc make zlib zlib-devel libffi libffi-devel readline-devel openssl-devel openssl11 openssl11-devel
4、安装openssl11,后期的pip3安装网络(https)相关模块需要用到ssl模块
export CFLAGS=$(pkg-config --cflags openssl11)
export LDFLAGS=$(pkg-config --libs openssl11)
5、进入python3.11.0的解压目录
cd Python-3.11.0
6、编译安装
./configure --prefix=/usr/local/mydev/python/python3 --with-ssl
make && make install
7、创建软连接
ln -s /usr/local/mydev/python/python3/bin/python3.11 /usr/local/bin/python3ls
8、配置环境变量(用于快速使用pip3)
vi ~/.bash_profile
# 按i进入编辑模式
export PYTHON_HOME=/usr/local/mydev/python/python3
export PATH=$PYTHON_HOME/bin:$PATH
# 先按esc 然后输入:wq 退出编辑
#执行source ~/.bash_profile命令使配置生效
source ~/.bash_profile
9、查看python3.11.0是否成功安装及能否正常使用
查看版本号
python3 --version
使用
python3
分割线
=========================================================================
将py打包成.so
1、安装必要的工具
安装gcc
sudo yum install python3-dev gcc
安装Cython
pip3 install cython
2、准备需要加密的脚本
加密脚本
# 创建 setup.py
vi setup.py
# 按i进入编辑模式
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize(["test.py"]))# 先按esc 然后输入:wq 退出编辑
3、创建测试代码
# 创建 test.py
vi test.py
# 按i进入编辑模式
from test import add
a = add(2,2)
print(a)# 先按esc 然后输入:wq 退出编辑
4、打包成.so
1、直接使用命令去打包
python3 setup.py build_ext --inplace
2、使用脚本去自动打包
2.1创建build_ext.sh脚本
vi
build_ext.sh
2.2准备脚本文件(将脚本复制进build_ext.sh
)
#!/bin/bash
# 检查python3是否存在
if ! command -v python3 &> /dev/null; then
echo "python3 命令不存在,请确保已安装Python 3。"
exit 1
fi
# 检查python3是否指向Python 3.11.0
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}')
if [[ "$PYTHON_VERSION" != "3.11.0" ]]; then
echo "python3 指向的版本不是 3.11.0,当前版本是 $PYTHON_VERSION。"
exit 1
fi
# 检查当前目录下是否存在setup.py文件
if [ ! -f "setup.py" ]; then
echo "当前目录下没有找到setup.py文件,请确保你在正确的目录下运行此脚本。"
exit 1
fi
# 运行build_ext命令
python3 setup.py build_ext --inplace
# 检查命令是否成功执行
if [ $? -eq 0 ]; then
echo "build_ext 命令执行成功!"
else
echo "build_ext 命令执行失败,请检查错误信息。"
exit 1
fi
2.3赋予脚本执行权限
chmod +x build_ext.sh
2.4运行脚本
./build_ext.sh