在 python 开发中,主要有三种创建虚拟环境的方式,它们各有特点和适用场景。下面为你详细介绍每种方式:
1.conda
conda 是一个跨平台的包管理器和环境管理器,由 anaconda 发行版引入。
特点:
- 不仅仅是 python:可以管理其他语言和工具的依赖
- 预编译包:许多科学计算包有预编译版本,安装速度快
- 环境隔离彻底:包括系统库级别的隔离
安装:
# 安装 miniconda(轻量版)或 anaconda(完整版)
# 下载地址:https://docs.conda.io/en/latest/miniconda.html
使用方法:
# 创建环境(默认使用 conda 源) conda create -n myenv python=3.9 # 创建环境并指定包 conda create -n myenv python=3.9 numpy pandas # 激活环境 conda activate myenv # windows/linux/macos # 退出环境 conda deactivate # 列出所有环境 conda env list # 删除环境 conda remove -n myenv --all # 导出环境配置 conda env export > environment.yml # 从配置创建环境 conda env create -f environment.yml
优点:
- 处理复杂依赖关系能力强
- 支持非 python 包(如 r、c++库)
- 二进制包安装,减少编译问题
- 跨平台一致性较好
缺点:
- 环境体积较大
- 社区版可能有些包更新不及时
2.pyenv + pyenv-virtualenv
这是两个工具的组合:
- pyenv:管理多个 python 版本
- pyenv-virtualenv:为不同项目创建虚拟环境
安装:
# macos brew install pyenv pyenv-virtualenv # linux git clone https://github.com/pyenv/pyenv.git ~/.pyenv git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
配置 shell(~/.bashrc 或 ~/.zshrc):
export pyenv_root="$home/.pyenv" export path="$pyenv_root/bin:$path" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
使用方法:
# 安装指定 python 版本 pyenv install 3.9.13 # 列出已安装版本 pyenv versions # 创建虚拟环境(基于特定 python 版本) pyenv virtualenv 3.9.13 myproject-3.9 # 激活环境 pyenv activate myproject-3.9 # 退出环境 pyenv deactivate # 设置项目本地环境(进入目录自动激活) cd myproject pyenv local myproject-3.9 # 删除环境 pyenv uninstall myproject-3.9
优点:
- 完美解决多版本 python 共存问题
- 项目级自动激活很方便
- 轻量级,只管理 python 环境
缺点:
- 需要额外配置
- 只管理 python,不处理其他依赖
3.venv(python 内置)
python 3.3+ 内置的虚拟环境工具,无需额外安装。
特点:
- 标准库自带:无需额外安装
- 轻量简单:功能专一
- python 官方推荐
使用方法:
# 创建虚拟环境 python -m venv myenv # 或指定 python 版本 python3.9 -m venv myenv # 激活环境 # windows: myenv\scripts\activate # linux/macos: source myenv/bin/activate # 退出环境 deactivate # 创建带系统 site-packages 的环境(可访问系统包) python -m venv --system-site-packages myenv # 升级 pip 等工具 python -m venv --upgrade myenv
文件结构:
myenv/ ├── bin/ (或 scripts/ 在 windows) │ ├── activate │ ├── pip │ ├── python │ └── ... ├── lib/ │ └── python3.9/site-packages/ └── pyvenv.cfg
优点:
- 无需安装,python 自带
- 简单易用,学习成本低
- 官方维护,兼容性好
缺点:
- 不能管理 python 版本本身
- 功能相对简单
其他插件/工具
virtualenv(第三方,venv 的前身)
# 安装 pip install virtualenv # 使用 virtualenv myenv source myenv/bin/activate
pipenv
结合了 pip 和虚拟环境管理
# 安装 pip install pipenv # 使用 cd myproject pipenv --python 3.9 # 创建环境 pipenv install requests # 安装包 pipenv shell # 激活环境 pipenv lock # 生成锁文件
poetry
现代 python 包管理和依赖管理
# 安装 pip install poetry # 使用 poetry new myproject # 创建新项目 poetry install # 安装依赖 poetry add requests # 添加包 poetry shell # 激活环境
对比与选择建议
| 工具 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| conda | 数据科学、机器学习、需要非python依赖 | 依赖管理强大,预编译包多 | 体积大,有些包更新慢 |
| pyenv+virtualenv | 多版本python开发,项目隔离 | python版本管理优秀,轻量 | 需要配置,只管理python |
| venv | 简单python项目,标准开发 | 内置无需安装,简单直接 | 不能管理python版本 |
| pipenv/poetry | 现代化项目管理,依赖锁定 | 依赖管理先进,整合性好 | 学习曲线稍陡 |
推荐选择:
- 初学者/简单项目:使用
venv,简单够用 - 数据科学/ai项目:使用
conda,依赖管理方便 - web开发/多版本项目:使用
pyenv + virtualenv或poetry - 团队协作项目:考虑
poetry或pipenv,有 lock 文件保证一致性
每种工具都可以配合使用,比如用 pyenv 管理 python 版本,用 venv 创建虚拟环境。选择最适合你工作流的方式即可。
到此这篇关于python创建虚拟环境的3种方式的文章就介绍到这了,更多相关python创建虚拟环境内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论