虚拟环境二三事¶
虚拟环境是什么¶
虚拟环境(Virtual Environment)是一个独立的Python环境,允许你在同一台机器上同时运行多个不同版本的Python以及各自不同的包和依赖,而不会相互干扰。
这对于开发和部署Python项目非常有用,它能确保项目之间的依赖关系不会发生冲突。
例如,一个项目可能需要Django 2.2,而另一个项目则需要Django 3.0。通过使用虚拟环境,可以在同一台机器上同时管理这两个项目而不发生冲突。
虚拟环境的优点¶
-
依赖隔离:不同项目可以 拥有各自的依赖包版本,不会互相影响。
-
可移植性:虚拟环境可以被复制到其他机器上,这样在不同的开发环境或生产环境中,都可以 复现相同的依赖关系,确保代码的可移植性。
3.版本控制:虚拟环境中安装的Python版本和依赖库可以 锁定在特定的版本,这对于保证代码的稳定性和可维护性很重要。
如何使用python虚拟环境¶
使用情景
我现在有一堆clone下来的实验代码在~/bxhu/
下,需要使用虚拟环境安装matplotlib / pandas / numpy
等包,那么我要在~/bxhu/
中创建虚拟环境
(1) 进入指定工作目录,并初始化创建名为.venv
的虚拟环境
Bash | |
---|---|
1 2 |
|
Tips
虽然这里.venv
的命名不是固定的,可以自定义命名,但我比较推荐按照.venv
来,因为这样的命名符合大多数机器自命名的规则,也会把虚拟文件夹默认为ls
不主动显示😊
(2) 激活虚拟环境
Bash | |
---|---|
1 |
|
此时你就已经进入虚拟环境了
如果不放心可以检查一下:
Bash | |
---|---|
1 |
|
Bash | |
---|---|
1 2 |
|
(3) 在虚拟环境中,你可以做一系列操作,比如我在这里安装一些package
Bash | |
---|---|
1 2 |
|
(4) 关闭虚拟环境并退出
Bash | |
---|---|
1 |
|
虚拟环境背后的原理是什么¶
虚拟环境本质上是:一个包含了独立Python可执行文件的目录,同时也包含了独立的site-packages目录,用来安装依赖包。通过使用虚拟环境,Python解释器会首先查找并使用虚拟环境中的库,而不是全局环境中的库,这样保证了环境的隔离。
sys.path
的操作:当你激活虚拟环境时,虚拟环境会修改环境变量(如PATH),使得你当前Shell会优先使用虚拟环境中的Python解释器。同时,虚拟环境还会调整Python的sys.path
,确保Python在导入模块时优先查找虚拟环境中的依赖包。
事实上如果从python的角度来看层次设计,可以用下面的图表示:
如何安装“过时”的python虚拟环境¶
情景:我电脑系统的python是3.12.4,但现在需要以python3.9运行一份代码(pwd = ./A
)
在不破坏电脑系统python3.12的前提下,我希望是:在A中安装python3.9的虚拟环境,这样在A中调用的所有py都划归成python3.9
Bash | |
---|---|
1 |
|
Bash | |
---|---|
1 |
|
Bash | |
---|---|
1 2 |
|
Bash | |
---|---|
1 |
|
Bash | |
---|---|
1 2 |
|
Bash | |
---|---|
1 2 3 4 |
|