Python venv模块(二)——为何要使用虚拟环境

直接原因:Python本身依赖管理不佳——若未具体指定,pip将把所有你安装的外部包都置于名为site-package的文件夹下。

从技术上讲,Python 有两个 site-packages 文件夹:

  • purelib/ 只包含用纯 Python 代码编写的模块。

  • platlib/ 应包含非纯 Python 编写的二进制文件,例如 .dll、.so 或 .pydist 文件。

如果你使用的是 Fedora 或 RedHat Linux 发行版,你可以在不同的位置找到这些文件夹。

不过,大多数操作系统都会执行 Python 的 site-packages 设置,使这两个位置指向相同的路径,从而有效地创建一个单一的 site-packages 文件夹。你可以使用 sysconfig 检查路径:

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/usr/local/lib/python3.12/site-packages'
>>> sysconfig.get_path("platlib")
'/usr/local/lib/python3.12/site-packages'

具体而言,虚拟环境解决的问题包括:

避免系统污染

Linux 和 macOS 预装了操作系统用于内部任务的 Python 版本。

如果将软件包安装到操作系统的全局 Python 中,这些软件包将与系统相关的软件包混合。这种混合可能会对操作系统正常运行的关键任务产生意想不到的副作用。

此外,如果你更新了操作系统,那么你安装的软件包可能会被覆盖或丢失。

避免依赖冲突

一个项目可能需要与另一个项目不同版本的外部库。如果你只有一个安装包的地方,那么你就无法使用同一个库的两个不同版本。

解决方案则说为存在依赖冲突的不同项目分别创建一个虚拟环境。

尽量减少可重复性问题

将所有包都安装在同一位置,则很难区分每个单独项目的依赖,进行项目的复制或迁移的时候会十分麻烦。

若为每个项目都使用一个单独的虚拟环境,那么就可以更直观地从固定的依赖关系中读取项目需求。这意味着,当你开发出一款出色的应用程序时,你可以更轻松地分享你的成功经验,让其他人有可能与你合作!

避免安装权限锁定

最后,你可能需要计算机上的管理员权限,才能将软件包安装到 Python 主机的 site-packages 目录中。在公司工作环境中,你很可能缺乏相应权限。

如果你使用虚拟环境,那么你就可以在用户权限范围内创建一个新的安装位置,这样你就可以安装和使用外部软件包。

无论你是作为业余爱好在自己的机器上编码,还是为客户开发网站,抑或是在公司环境中工作,使用虚拟环境从长远来看都会为你省去很多麻烦。

参考资源

Python Virtual Environments: A Primer – Real Python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值