翼度科技»论坛 编程开发 python 查看内容

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

9

主题

9

帖子

27

积分

新手上路

Rank: 1

积分
27

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

首先确保本地环境已经安装好了Python3开发环境,如果没有,请移步:一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境,囿于篇幅,这里不再赘述。
随后在克隆自己的项目,用于打包,这里我们以Bert-vits2-2.3的项目为例子:
  1. git clone https://github.com/v3ucn/Bert-vits2-V2.3
复制代码
随后进入项目的根目录:
  1. cd Bert-vits2-V2.3
复制代码
正常流程下我们会直接执行pip install -r requirements.txt在当前环境下安装依赖。
但是我们现在不使用当前开发环境,而是使用虚拟环境。
首先创建一个虚拟环境的工作目录:
  1. mkdir venv
复制代码
随后进入venv目录
  1. cd venv
复制代码
创建独立的虚拟环境:
  1. python -m venv .
复制代码
该命令python -m venv  可以创建一个独立的Python3运行环境。venv目录里面有python3、pip3等可执行文件,实际上是链接到Python系统目录的软链接。
此时,执行激活命令就可以进入该虚拟环境venv:
  1. E:\work\Bert-vits2-2.3\venv>.\Scripts\activate  
  2.   
  3. (venv) E:\work\Bert-vits2-2.3\venv>  
复制代码
可以看到,当前命令行的前缀有一个(venv)代表我们现在处于虚拟环境之中。
注意该虚拟环境和当前系统的Python3环境是隔离的。
我们也可也执行命令退出虚拟环境venv:
  1. (venv) E:\work\Bert-vits2-2.3\venv>.\Scripts\deactivate.bat  
  2. E:\work\Bert-vits2-2.3\venv>  
复制代码
通过deactivate命令可以推出虚拟环境。
用虚拟环境venv给项目安装依赖

创建好了虚拟环境之后,我们就可以给当前的项目(Bert-vits2-2.3)安装依赖了:
  1. .\venv\Scripts\pip.exe install -r .\requirements.txt
复制代码
注意,这里所有的依赖文件都会安装到虚拟环境目录,即venv。
如果愿意,也可以执行命令来升级虚拟环境的pip软件:
  1. .\venv\Scripts\python.exe -m pip install --upgrade pip
复制代码
完成依赖的安装以后,可以执行命令来查看项目的依赖列表:
  1. E:\work\Bert-vits2-2.3>.\venv\Scripts\pip.exe list  
  2. Package            Version  
  3. ------------------ ------------  
  4. certifi            2023.11.17  
  5. charset-normalizer 3.3.2  
  6. colorama           0.4.6  
  7. coloredlogs        15.0.1  
  8. filelock           3.13.1  
  9. flatbuffers        23.5.26  
  10. ftfy               6.1.3  
  11. humanfriendly      10.0  
  12. idna               3.6  
  13. imageio            2.33.1  
  14. Jinja2             3.1.2  
  15. lazy_loader        0.3  
  16. MarkupSafe         2.1.3  
  17. mpmath             1.3.0  
  18. networkx           3.2.1  
  19. numpy              1.23.5  
  20. onnx               1.14.0  
  21. onnxruntime-gpu    1.16.2  
  22. opencv-python      4.7.0.72  
  23. packaging          23.2  
  24. Pillow             9.5.0  
  25. pip                23.0.1  
  26. protobuf           4.23.2  
  27. pyreadline3        3.4.1  
  28. PyWavelets         1.5.0  
  29. regex              2023.12.25  
  30. requests           2.31.0  
  31. scikit-image       0.21.0  
  32. scipy              1.11.4  
  33. setuptools         65.5.0  
  34. sympy              1.12  
  35. tifffile           2023.12.9  
  36. tk                 0.1.0  
  37. torch              2.0.1+cu118  
  38. torchaudio         2.0.2+cu118  
  39. torchvision        0.15.2+cu118  
  40. tqdm               4.66.1  
  41. typing_extensions  4.9.0  
  42. urllib3            2.1.0  
  43. wcwidth            0.2.12
复制代码
也可以通过pip的show命令来查看依赖的具体位置:
  1. E:\work\Bert-vits2-2.3>.\venv\Scripts\pip.exe show numpy  
  2. Name: numpy  
  3. Version: 1.23.5  
  4. Summary: NumPy is the fundamental package for array computing with Python.  
  5. Home-page: https://www.numpy.org  
  6. Author: Travis E. Oliphant et al.  
  7. Author-email:  
  8. License: BSD  
  9. Location: e:\work\Bert-vits2-2.3\venv\lib\site-packages  
  10. Requires:  
  11. 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目录。
随后,我们执行项目中的脚本就可以用虚拟环境来执行,如:
  1. .\venv\Scripts\pip.exe webui.py
复制代码
如果不想通过命令执行,也可以编写bat脚本:
  1. @echo off  
  2. chcp 65001  
  3.   
  4. call venv\python.exe webui.py  
  5.   
  6. @echo 启动完毕,请按任意键关闭  
  7. 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 项目的场景。两者在项目开发中有着不同的应用目的和优势,但在整合包制作领域,二者都可以完美实现项目整合包的制作和更新。

来源:https://www.cnblogs.com/v3ucn/p/17937536
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具