Python3虚拟环境venv

多项目共存的服务器,每个项目依赖的包可能不一样,比如项目A需要 utilset 0.0.3, 项目B需要utilset 0.4,这时候就需要隔离开,venv就是用来为一个应用创建一套“隔离”的Python运行环境。

venv 支持创建轻量的“虚拟环境”,每个虚拟环境将拥有它们自己独立的安装在其 site 目录中的 Python 软件包集合。 虚拟环境是在现有的 Python 安装版基础之上创建的,这被称为虚拟环境的“基础”Python,并且还可选择与基础环境中的软件包隔离开来,这样只有在虚拟环境中显式安装的软件包才是可用的。

创建


bash

代码解读

复制代码

mkdir puresai cd puresai ➜ puresai ls -lh total 0 ➜ puresai python3 -m venv . ➜ puresai ls -lh total 8 drwxr-xr-x 12 sai staff 384B Nov 24 19:45 bin drwxr-xr-x 2 sai staff 64B Nov 24 19:45 include drwxr-xr-x 3 sai staff 96B Nov 24 19:45 lib -rw-r--r-- 1 sai staff 111B Nov 24 19:45 pyvenv.cfg

可以发现有几个文件夹和一个pyvenv.cfg文件:

激活

bin目录下有个 activate,Linux/Mac用 source bin/activate,Windows用bin/activate.bat激活该venv环境。


shell

代码解读

复制代码

puresai$ source bin/activate (puresai) $

注意到命令提示符变了,有个(puresai)前缀,表示当前环境是一个名为puresai的Python环境。

下面正常安装各种第三方包,并运行python命令:


ini

代码解读

复制代码

pip3 install utilset==0.0.3 Collecting utilset==0.0.3 Using cached utilset-0.0.3-py3-none-any.whl (4.8 kB) Installing collected packages: utilset Successfully installed utilset-0.0.3 WARNING: You are using pip version 21.2.4; however, version 24.3.1 is available. You should consider upgrading via the '/Users/sai/puresai/bin/python3 -m pip install --upgrade pip' command. (puresai)

在venv环境下,用pip安装的包都被安装到 puresai 这个环境下,具体目录是 puresai/lib/python3.x/site-packages,因此,系统Python环境不受任何影响。也就是说,puresai 环境是专门针对puresai这个应用创建的。

退出当前的 puresai 环境,使用deactivate命令:


ruby

代码解读

复制代码

(puresai) $ deactivate

此时就回到了正常的环境,现在pip或python均是在系统Python环境下执行。

完全可以针对每个应用创建独立的Python运行环境,这样就可以对每个应用的Python环境进行隔离。

原理

venv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python链接或复制一份到venv的环境,用命令source activate进入一个venv环境时,venv会修改相关环境变量,让命令python和pip均指向当前的venv环境。

如果不再使用某个venv,例如puresai,删除它也很简单。首先确认该venv没有处于“激活”状态,然后直接把整个目录puresai删掉就行。

### 解决Python复制`venv`虚拟环境中出现的错误 当尝试复制现有的 Python `venv` 虚拟环境时,可能会遇到诸如 "Fatal error in launcher: Unable to create process using..." 这样的启动器致命错误[^3]。这类问题通常源于直接拷贝整个虚拟环境目录所引发的路径依赖性和其他配置不兼容。 为了有效处理这个问题并成功迁移虚拟环境,建议遵循以下方法: #### 方法一:导出和重新安装包列表 一种可靠的方法是从原始虚拟环境中提取所有已安装库的信息,并在一个新的虚拟环境中重建这些依赖关系。这可以通过 pip 工具来实现。 1. **激活源虚拟环境** 假设当前工作于 Windows 平台下的某个名为 `old_env` 的虚拟环境中,则应先确保该环境处于活动状态。 ```bash .\old_env\Scripts\activate.bat ``` 2. **保存依赖项到文件** 使用命令将现有虚拟环境中的所有软件包及其版本记录下来。 ```bash pip freeze > requirements.txt ``` 3. **创建新虚拟环境** 接着,在目标位置建立一个新的独立虚拟环境(例如命名为 `new_env`),而不是简单地复制旧的一个。 ```bash python -m venv new_env ``` 4. **激活新建的虚拟环境** 同样地,切换至这个刚创建的新虚拟环境。 ```bash .\new_env\Scripts\activate.bat ``` 5. **根据需求文档重装所需库** 利用之前生成的要求清单来恢复所有的第三方扩展模块。 ```bash pip install -r ..\path_to_requirements_file\requirements.txt ``` 这种方法可以避免因直接复制而带来的潜在冲突或不稳定因素,因为每次都是基于最新的系统设置构建全新的执行环境。 #### 方法二:手动调整原有虚拟环境 对于某些特定场景下确实需要保留原版虚拟环境的情况,也可以考虑对已经克隆过来的副本做适当修正。主要关注点在于修复可能损坏的脚本链接以及更新内部配置指向正确的解释器路径等细节方面的工作。不过这种方式相对复杂且容易遗漏重要环节,因此推荐优先采用上述更稳健的做法。 ```python import sysconfig print(sysconfig.get_paths()) ``` 这段简单的 Python 代码可以帮助理解不同平台上的标准库路径布局差异,从而更好地指导后续的手动调整过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值