使用 virtualenv/venv 管理虚拟环境

要不我们还是用回 virtualenv/venv 和 pip 吧
更新于: 2024-03-12 15:27:22

Why

不同的包,会有不同的版本,如果都存在于同一个版本里,会导致“混乱”。参考 nodejs 里的  node_modules 

virtualenv、venv 区别

假设项目名为 snow,下面是一些对比,环境名为 snow-venv

测试下来  python -m 创建的环境,有时候会出问题,比如 jsw_nx 报错,找不到包的情况。

字段venvvirtualenv
推荐pytohn3 推荐python2 推荐用此方案
基本python3 自带python 的第3方库,需要额外安装包
安装不需要安装
pip install virtualenv
创建虚拟环境
python -m venv snow-venv
python -m venv venv
virtualenv snow-venv
激活环境
source snow-venv/bin/activate
# 或者
. snow-venv/bin/activate
. venv/bin/activate
-
退出当前环境
deactivate
 
激活后
(snow-venv) $
-
安装新包
# 安装包
(snow-venv) $ pip install flask
# 更新包
(snow-venv) $ pip install -U flask
-
卸载包
(snow-venv) $ pip uninstall flask
-
生成依赖列表
requirement.txt
(snow-venv) $ pip freeze > requirements.txt
-
安装依赖
(snow-venv) $ pip install -r requirements.txt
-
截图

最佳实践

已经更新至 alfred: vv 命令集合

# 第一个 venv 是命名名,第2个是环境名 venv
python -m venv venv
# 激活
. venv/bin/activate
# 退出
deactivate
# 生成当前环境的 requirement.txt
pip freeze > requirements.txt
# 安装
pip install -r requirements.txt

常见问题

有时候,会出现 ModuleNotFoundError: No module named ‘pymonogo’ 这种情况,处理方式如下:

# 后面的路径为绝对路径
$ python -m venv /Users/admin/alo7i/spider-zhishiq/venv

# 第2次是用这个解决的
$ source venv/bin/activate

参考