• 一键打包,随时运行,Python3项目虚拟环境一键整合包的制作(Venv)


    之前我们介绍了如何使用嵌入式 Python3 环境给项目制作一键整合包,在使用嵌入式 Python 环境时,通常是作为另一个应用程序的一部分,而Python3虚拟环境是为了在开发过程中隔离项目所需的 Python 环境。虚拟环境允许我们在同一台计算机上的不同项目中使用不同的 Python 版本和软件包,而不会相互干扰。

    本次我们利用Python3自带的虚拟环境(venv)功能来给项目制作一键整合包。

    创建虚拟环境

    首先确保本地环境已经安装好了Python3开发环境,如果没有,请移步:一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境,囿于篇幅,这里不再赘述。

    随后在克隆自己的项目,用于打包,这里我们以Bert-vits2-2.3的项目为例子:

    git clone https://github.com/v3ucn/Bert-vits2-V2.3
    

    随后进入项目的根目录:

    cd Bert-vits2-V2.3
    

    正常流程下我们会直接执行pip install -r requirements.txt在当前环境下安装依赖。

    但是我们现在不使用当前开发环境,而是使用虚拟环境。

    首先创建一个虚拟环境的工作目录:

    mkdir venv
    

    随后进入venv目录

    cd venv
    

    创建独立的虚拟环境:

    python -m venv .
    

    该命令python -m venv <目录位置> 可以创建一个独立的Python3运行环境。venv目录里面有python3、pip3等可执行文件,实际上是链接到Python系统目录的软链接。

    此时,执行激活命令就可以进入该虚拟环境venv:

    E:\work\Bert-vits2-2.3\venv>.\Scripts\activate  
      
    (venv) E:\work\Bert-vits2-2.3\venv>  
    
    

    可以看到,当前命令行的前缀有一个(venv)代表我们现在处于虚拟环境之中。

    注意该虚拟环境和当前系统的Python3环境是隔离的。

    我们也可也执行命令退出虚拟环境venv:

    (venv) E:\work\Bert-vits2-2.3\venv>.\Scripts\deactivate.bat  
    E:\work\Bert-vits2-2.3\venv>  
    
    

    通过deactivate命令可以推出虚拟环境。

    用虚拟环境venv给项目安装依赖

    创建好了虚拟环境之后,我们就可以给当前的项目(Bert-vits2-2.3)安装依赖了:

    .\venv\Scripts\pip.exe install -r .\requirements.txt
    

    注意,这里所有的依赖文件都会安装到虚拟环境目录,即venv。

    如果愿意,也可以执行命令来升级虚拟环境的pip软件:

    .\venv\Scripts\python.exe -m pip install --upgrade pip
    

    完成依赖的安装以后,可以执行命令来查看项目的依赖列表:

    E:\work\Bert-vits2-2.3>.\venv\Scripts\pip.exe list  
    Package            Version  
    ------------------ ------------  
    certifi            2023.11.17  
    charset-normalizer 3.3.2  
    colorama           0.4.6  
    coloredlogs        15.0.1  
    filelock           3.13.1  
    flatbuffers        23.5.26  
    ftfy               6.1.3  
    humanfriendly      10.0  
    idna               3.6  
    imageio            2.33.1  
    Jinja2             3.1.2  
    lazy_loader        0.3  
    MarkupSafe         2.1.3  
    mpmath             1.3.0  
    networkx           3.2.1  
    numpy              1.23.5  
    onnx               1.14.0  
    onnxruntime-gpu    1.16.2  
    opencv-python      4.7.0.72  
    packaging          23.2  
    Pillow             9.5.0  
    pip                23.0.1  
    protobuf           4.23.2  
    pyreadline3        3.4.1  
    PyWavelets         1.5.0  
    regex              2023.12.25  
    requests           2.31.0  
    scikit-image       0.21.0  
    scipy              1.11.4  
    setuptools         65.5.0  
    sympy              1.12  
    tifffile           2023.12.9  
    tk                 0.1.0  
    torch              2.0.1+cu118  
    torchaudio         2.0.2+cu118  
    torchvision        0.15.2+cu118  
    tqdm               4.66.1  
    typing_extensions  4.9.0  
    urllib3            2.1.0  
    wcwidth            0.2.12
    

    也可以通过pip的show命令来查看依赖的具体位置:

    E:\work\Bert-vits2-2.3>.\venv\Scripts\pip.exe show numpy  
    Name: numpy  
    Version: 1.23.5  
    Summary: NumPy is the fundamental package for array computing with Python.  
    Home-page: https://www.numpy.org  
    Author: Travis E. Oliphant et al.  
    Author-email:  
    License: BSD  
    Location: e:\work\Bert-vits2-2.3\venv\lib\site-packages  
    Requires:  
    Required-by: imageio, onnx, onnxruntime-gpu, opencv-python, PyWavelets, scikit-image, scipy, tifffile, torchvision
    

    可以看到,这里numpy库就已经被安装到了e:\work\Bert-vits2-2.3\venv\lib\site-packages目录。

    随后,我们执行项目中的脚本就可以用虚拟环境来执行,如:

    .\venv\Scripts\pip.exe webui.py
    

    如果不想通过命令执行,也可以编写bat脚本:

    @echo off  
    chcp 65001  
      
    call venv\python.exe webui.py  
      
    @echo 启动完毕,请按任意键关闭  
    call pause
    

    至此我们就完成了Bert-vits2-2.3虚拟环境依赖的安装,只需把Bert-vits2-2.3目录压缩,就拿到了一个Bert-vits2-2.3项目的整合包。

    嵌入式embed和虚拟环境venv区别

    嵌入式embed Python 通常用于将 Python 解释器嵌入到其他应用程序中,以便在应用程序中执行 Python 代码。这种方法常见于需要在应用程序中动态执行脚本或扩展功能的情况。例如,游戏开发中的脚本系统、自定义插件或扩展功能的实现,都可能会使用嵌入式 Python。嵌入式 Python 的优势在于它的轻量级和灵活性,可以根据应用程序的需求进行定制,不需要包含完整的 Python 安装。

    虚拟环境venv则用于在同一台计算机上管理多个 Python 项目的依赖关系。每个项目可以有自己独立的虚拟环境,这样可以避免不同项目之间的依赖冲突和版本问题。虚拟环境的应用场景包括:在开发多个项目时,每个项目可以有自己独立的依赖包和 Python 版本;在部署应用程序时,可以确保部署环境与开发环境一致;在测试和维护项目时,可以隔离不同项目的依赖,方便管理和维护。

    结语

    嵌入式 Python 适用于需要将 Python 作为应用程序的一部分嵌入到其他系统中的场景,而虚拟环境适用于需要在同一台计算机上管理多个 Python 项目的场景。两者在项目开发中有着不同的应用目的和优势,但在整合包制作领域,二者都可以完美实现项目整合包的制作和更新。

  • 相关阅读:
    FCOS网络详解
    2022 年广西职业院校技能大赛高职组《云计算》赛项赛卷
    面向对象的三大特性之——继承
    Dubbo学习记录(六)--Spring整合Dubbo中的Dubbo配置文件流程解析(二)
    OC高仿iOS网易云音乐AFNetworking+SDWebImage+MJRefresh+MVC+MVVM
    vue父组件向子组件传值的方法
    你的英语目前处在什么样的水平?
    阿里云:云服务器ECS搭建
    强大博客搭建全过程(1)-hexo博客搭建保姆级教程
    DDR3 controller 之储存器介绍
  • 原文地址:https://www.cnblogs.com/v3ucn/p/17937536