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

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

dabao.jpg

之前我们介绍了如何使用嵌入式 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 项目的场景。两者在项目开发中有着不同的应用目的和优势,但在整合包制作领域,二者都可以完美实现项目整合包的制作和更新。

相关文章
|
4月前
|
数据处理 开发工具 开发者
requirement.txt 管理python包依赖
在 Python 项目中,`requirements.txt` 用于记录依赖库及其版本,便于环境复现。本文介绍了多种生成该文件的方法:基础方法使用 `pip freeze`,进阶方法使用 `pipreqs`,专业方法使用 `poetry` 或 `pipenv`,以及手动维护方式。每种方法适用不同场景,涵盖从简单导出到复杂依赖管理,并提供常见问题的解决方案,帮助开发者高效生成精准的依赖列表,确保项目环境一致性。
1133 4
|
8月前
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
252 6
|
8月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的美容预约管理系统源码+运行
基于Python+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的美容诊所预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
132 9
|
8月前
|
JavaScript 前端开发 关系型数据库
基于Python+Vue开发的体育场馆预约管理系统源码+运行
本项目为大学生课程设计作业,采用Python和Vue技术构建了一个体育场馆预约管理系统(实现前后端分离)。系统的主要目标在于帮助学生理解和掌握Python编程知识,同时培养其项目规划和开发能力。参与该项目的学习过程,学生能够在实际操作中锻炼技能,为未来的职业发展奠定良好的基础。
193 3
|
8月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的摄影网上预约管理系统源码+运行
基于Python+Vue开发的摄影网上预约管理系统(前后端分离),影楼婚纱摄影,这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的在线摄影预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
157 8
|
8月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的民宿客房预订管理系统源码运行
基于Python+Vue开发的民宿客房预订管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的民宿客房预订管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
179 8
|
8月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的新闻管理系统源码+运行
基于Python+Vue开发的新闻管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的新闻管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
188 5
|
8月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的房产销售管理系统源码+运行
基于Python+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
158 2
|
8月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的鲜牛奶订购管理系统源码+运行
基于Python+Vue开发的鲜牛奶订购管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的牛奶订购管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
127 1
|
开发工具 git 索引
Python打包系统简单入门
最近把pyenv、pipenv这种都研究了一下,然后我发现一个严重的问题:就是我虽然看了半天这些工具,但是我对Python自己的打包系统却完全没有了解。所以这篇文章就来研究一下Python自带的打包系统。
1563 0

推荐镜像

更多