首页 / Jenkins / Jenkins构建Python项目环境和依赖包安装

Jenkins构建Python项目环境和依赖包安装

摘要:Jenkins构建Python项目环境和依赖包安装 本文主要讲解Python项目中,Python环境部署以及依赖包的自动安装; 我们平时使用PyCharm编写我们的代码然后提交到Git远程服务器上一般不会包含Python环境和第三方依赖包,...

Jenkins构建Python项目环境和依赖包安装

本文主要讲解Python项目中,Python环境部署以及依赖包的自动安装;

我们平时使用PyCharm编写我们的代码然后提交到Git远程服务器上一般不会包含Python环境和第三方依赖包,只会提交代码部分;

那么我们在另外一台电脑拉取项目代码到本地,Python环境以及项目所需的依赖包或库如何同步部署安装呢?

又或者是在使用Jenkins构建我们的项目时,如何部署环境和自动安装所需的依赖包?

我们首先来了解两个东西;

Python虚拟环境

什么是虚拟环境

假设自己电脑上的Python环境称为系统环境,而默认情况下,虚拟环境和系统环境是完全隔离的;

每个系统环境下可以有多个虚拟环境;

每个虚拟环境都有自己独立的Python二进制文件及单独的包安装目录,可以在虚拟环境中安装属于自己的Python包,而系统环境、其他虚拟环境不会拥有这些Python包;

总之一句:Python虚拟环境主要是为不同Python项目创建一个隔离的环境,每个项目都可以拥有独立的依赖包环境,而项目间的依赖包互不影响;

所以强烈推荐我们的项目使用虚拟环境来运行,而不是直接使用系统环境运行Python项目;

如何创建Python虚拟环境

执行以下命令可直接创建虚拟环境,这里的python指的是系统环境的python可执行文件,使用系统环境的python来创建虚拟环境,后面的路径指的是虚拟环境创建的目录,没有会自动创建目录;

python -m venv D:/venv

我这里以D:/venv为例,这个路径可以自定;

创建之后大概内容就是这样:

image-20220831060700292

当然创建之后还不能使用,我们需要执行一下里面的activate文件(Linux)/activate.bat文件(Windows)来激活虚拟环境,执行一遍之后就可以了(通过命令行执行或者手动双击执行);

image-20220831060910820

虚拟环境激活后已经是可以使用的了,当前创建好的这个虚拟环境是一个全新的虚拟环境,没有安装任何第三方依赖包;

requirements.txt文件

requirements.txt是一个文件,它记录了Python项目的所有依赖项,该文件包含了依赖包的名称和指定的版本号(使用==、>=、<=指定),例如:

image-20220831053936274

在该项目中使用以下命令生成requirements.txt文件;

pip freeze > requirements.txt

之后如果创建了一个新的虚拟环境,可以在虚拟环境中使用,在项目环境中执行以下命令根据requirements.txt文件为当前项目的虚拟环境安装相关依赖包(需要联网);

pip install -r requirements.txt

我们项目中需要有一个requirements.txt文件在项目根目录下并且需要加入版本控制当中,如果项目所需要的依赖包有变化时我们也应该使用pip freeze > requirements.txt命令来更新这个文件,以便在其它地方保持依赖包的同步;

image-20230310144535814

image-20220831055100026

Jenkins构建时部署Python环境和安装相关依赖包

了解完上面两个东西之后,事情就变得简单了,直接参考我的构建代码;

image-20220901061455908

benv和venv根据实际情况修改;

benv为系统环境的目录,我这里是C:/Program Files/Python310,即为Python安装的目录;

venv为虚拟环境的目录,一般固定一个位置就可以了,我这里是把虚拟环境放在了D:/venv,如果该目录不存在则代表首次运行,执行下面的代码自动判断并创建虚拟环境;

Windows Bat代码:Jenkins构建步骤执行下面的代码(根据你项目实际情况修改)

:: Set the project root directory.
:: 设置项目目录
set PYTHONPATH=%WORKSPACE%

:: Set the basic python binary and virtual environment location.
:: 设置基础解释器位置和虚拟环境目录
set PYTHON_BASIC_BINARY=C:\Program Files\Python311\python.exe
set PYTHON_VENVS=D:\venv

:: Check and create virtual environment.
:: 检查和创建当前项目的虚拟环境
if not exist %PYTHON_VENVS% (
    mkdir %PYTHON_VENVS%
)
set VENV=%PYTHON_VENVS%\venv_%JOB_BASE_NAME%
if not exist %VENV%\pyvenv.cfg (
    call "%PYTHON_BASIC_BINARY%" -m venv %VENV%
    call "%VENV%\Scripts\python.exe" -m pip install --upgrade pip >nul 2>&1
    call "%VENV%\Scripts\python.exe" -V
    call "%VENV%\Scripts\pip.exe" -V
)

:: Activate to join the virtual environment.
:: 激活虚拟环境加入环境变量
call "%VENV%\Scripts\activate.bat"

:: Update dependencies.
:: 安装依赖
pip install -r requirements.txt -q

:: Execute the main.
:: 执行脚本
python main.py

Linux Shell代码:(如果你的Jenkins是在Linux上运行)

# Set the project root directory.
# 设置项目目录
export PYTHONPATH=$WORKSPACE;

# Set the basic python binary and virtual environment location.
# 设置基础解释器位置和虚拟环境目录
PYTHON_BASIC_BINARY=/usr/local/bin/python;
PYTHON_VENVS=/root/venv;

# Check and create virtual environment.
# 检查和创建当前项目的虚拟环境
mkdir -p $PYTHON_VENVS; chmod 0755 $PYTHON_VENVS;
VENV=$PYTHON_VENVS/venv_$JOB_BASE_NAME;
if [ ! -f "$VENV/pyvenv.cfg" ]; then
    $PYTHON_BASIC_BINARY -m venv $VENV;
    $VENV/bin/python -m pip install --upgrade pip >/dev/null 2>&1;
    $VENV/bin/python -V;
    $VENV/bin/pip -V;
fi

# Activate to join the virtual environment.
# 激活虚拟环境加入环境变量
. $VENV/bin/activate;

# Update dependencies.
# 安装依赖
pip install -r requirements.txt -q;

# Execute the main.
# 执行脚本
python main.py;

上面的代码逻辑很简单,复制过去就能用,根据你的项目情况简单修改一下即可,注意这三个地方就可以了:

1、系统基础Python环境的位置,根据你安装的Python实际位置进行修改;

2、将要创建虚拟环境的位置,这个可以自定,如果你没有特殊要求,以脚本给的默认位置即可;

3、最后一句执行python脚本的命令行,这个根据你的项目,具体执行哪个.py脚本以及携带参数之类的;

image-20220901062520540

目前刚设置好构建代码,我这里虚拟环境还没有创建,在Jenkins里手动构建看一下;

image-20220901062749211

image-20220901062851731

开始构建后venv目录已经有了,虚拟环境已经创建,依赖包也全部安装好了;

image-20220901062937932

image-20220901062953959

构建日志,成功;

image-20220901063409588

版权声明:《Jenkins构建Python项目环境和依赖包安装》为作者阿凡原创文章,转载请注明原文地址。
最后编辑:2022-8-31
分享到:
发表评论

用心评论~