配置python的venv虚拟环境
# 说明
有的时候,在一台机器上需要运行多个python项目。这些项目的依赖项不一,有可能会出现依赖不一致的情况
项目1,需要aiohttp 3.7.0
项目2,需要aiohtpp 3.8.1
如果出现了对于同一个依赖包 aiohttp
,需要两种不同版本的情况,就有可能会出现依赖项冲突
仅仅拿
aiohttp
做个例子,并非实际情况。版本不一致也不一定会出现冲突问题
这时候,我们就可以针对每个不同的项目创建一个venv
虚拟环境,并在这个虚拟环境中按照对应版本的包,就不会出现依赖项版本不一致导致的冲突问题了
# venv虚拟环境
python自带了一个虚拟环境venv,你也可以使用其他能够配置虚拟环境的包
# 1.创建
使用如下命令,会在当前文件夹下创建一个以bot
命名的文件夹和对应的虚拟环境
# python -m venv 名字
python -m venv bot
创建完毕后,先使用pip list
查看当前环境下安装了什么包
$ pip3.10 list
Package Version
---------------------- -----------
aiofiles 0.8.0
aiohttp 3.8.1
aiosignal 1.2.0
aliyun-python-sdk-core 2.13.36
aliyun-python-sdk-kms 2.16.0
APScheduler 3.9.1
async-timeout 4.0.2
attrs 22.1.0
certifi 2022.6.15
cffi 1.15.1
charset-normalizer 2.1.1
click 8.1.3
colorama 0.4.6
crcmod 1.7
cryptography 38.0.2
docopt 0.6.2
Flask 2.2.2
frozenlist 1.3.1
h11 0.14.0
idna 3.3
itsdangerous 2.1.2
Jinja2 3.1.2
jmespath 0.10.0
khl.py 0.3.7
MarkupSafe 2.1.1
multidict 6.0.2
numpy 1.24.1
oss2 2.16.0
pandas 1.5.2
Pillow 9.2.0
pip 22.3.1
pipreqs 0.4.11
pycparser 2.21
pycryptodome 3.15.0
pycryptodomex 3.15.0
python-dateutil 2.8.2
pytz 2022.2.1
pytz-deprecation-shim 0.1.0.post0
requests 2.28.1
riot-auth 1.0.3
setuptools 63.2.0
six 1.16.0
tzdata 2022.2
tzlocal 4.2
urllib3 1.26.11
uvicorn 0.18.3
valorant 1.0.4
Werkzeug 2.2.2
yarg 0.1.9
yarl 1.8.1
zhconv 1.4.3
你会发现还是有很多包啊?这是因为我们只创建了虚拟环境,还没有启动它!
# 2.启动
Linux系统中,使用如下命令,启动当前目录下,以bot命名的虚拟环境
source bot/bin/activate
如果是windows系统,则使用如下命令
./bot/Scripts/activate
你会发现命令行前面多了一个(bot)
,这就代表我们的虚拟环境启动成功了!
(bot) [muxue@bt-7274:~/kook/test]$
此时,再次执行 pip list
,可以看到只有两个默认的包了;这样便代表虚拟环境启动成功,我们可以在此环境中安装当前目录下的项目需要的依赖包
(bot) [muxue@bt-7274:~/kook/test]$ pip3.10 list
Package Version
---------- -------
pip 22.2.1
setuptools 63.2.0
# 3.退出
如下命令即可退出虚拟环境(windows和linux通用)
deactivate
# 结语
基本操作就是这些。使用虚拟环境,能保证系统上全局的依赖包不影响我们当前的项目。但在使用项目的时候,也需要注意是否有两个依赖项之间的冲突。
比如:A
包需要Falsk 0.3.1
,而B
包需要Falsk 0.5.1
,如果你的项目同时使用了A包和B包,就会出现依赖项冲突。
要避免使用会冲突的第三方包。
上次更新: 2023/05/28, 08:03:54