在学习过程中总是会接触到各种各样的项目,但是可能各个项目之间需要的环境不一样 ,每次都需要重新去配置相应的环境,这样会显得很麻烦啰嗦,这时候我们就可以借助到虚拟环境来解决这个问题。通过一番摸索,虚拟环境的配置一般可以有两个方向:
说在前面:
首先查看当前有几个虚拟环境(conda env list):
(1)借助第三方库
通过安装virtualenv来安装新的虚拟环境,安装virtualenvwrapper来对虚拟环境进行管理。
###安装方法
pip install virtualenv
pip install virtualenvwrapper ####linux下安装
pip install virtualenvwrapper-win ###windows下安装
利用virtualenv来创建新的虚拟环境,具体步骤如下:
- 利用virtualenv test来创建虚拟环境所在目录
- 激活虚拟环境,linux下 终端下输入source test/bin/activate即可,windows下运行test/Scripts/activate.bat即可。
- virtualenv -p /usr/bin/python2.7 test # -p参数指定Python解释器程序路径 ,直接pip安装所需要的包
- 至于想要退出虚拟环境,linux下直接在终端下运行 . test/bin/deactivate,windows下运行test/Scripts/deactivate.bat即可。
采用上述这种方式来创建虚拟环境比较单一,当存在多个虚拟环境时,这种方式就比较麻烦。于是就可以采用virtualenvwrapper实现对虚拟环境管理,其使用操作如下:
- 列出虚拟环境列表:workon
- 新建虚拟环境:mkvirtualenv [虚拟环境名称]
- 启动/切换虚拟环境:workon [虚拟环境名称]
- 离开虚拟环境:deactivate
(2)借助conda
anaconda是python里常用到的一个包安装管理工具,同时也可以利用它来对虚拟环境进行创建和管理。推荐使用这种方式来创建使用,具体操作如下
- 创建虚拟环境 conda create -n python27 python=2.7 # python=2.7 指定python版本
- 查看是否成功 conda env list
- 激活虚拟环境conda activate python27(虚拟环境的名字)
- 退出虚拟环境直接关闭终端,或conda deactivate python27或输入exit即可
- 删除虚拟环境 conda env remove -n python27即可
- 对虚拟环境包进行操作
###未进入该环境
conda list -n your_env_name
conda install --name python27 package_name
conda remove --name python27 package_name
###进入该环境
conda activate python27
pip install xxx
- conda安装包加速
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
conda config --set show_channel_urls yes
参考链接:Anaconda-- conda 创建、激活、退出、删除虚拟环境,anaconda conda 切换为国内源
(3)利用python3实现虚拟环境开发
由于python3开始集成了virtualenv,于是可以直接借助python3来实现开发环境分割隔离。创建虚拟环境的步骤也很简单,按照以下命令即可
python -m venv xxxx ###生成一个简易的与原python相同的环境
这样会在当前路径下生成一个xxx文件夹,里面包括lib、script等文件夹,接下来启动该虚拟环境
source xxx ###Linux下启动xxx环境
deactivate xxx ###linux下退出环境
#####windows下
cd xxx/Scripts
activate ####windows下启动环境
deactivate ###windows下退出环境
(4)uv管理
uv
通过 uv venv
来管理虚拟环境,类似于 virtualenv
和 venv
,但更快、更轻量。以下是基本使用方法:
1. 创建虚拟环境
uv venv myenv
这个命令会在当前目录下创建 myenv
目录作为虚拟环境。
uv
没有像conda env list
这样的命令来直接列出所有虚拟环境,但可以用以下方法手动查看:方法 1:检查
UV_VIRTUALENVS
目录
uv
默认将虚拟环境存储在~/.uv/venvs
目录(Linux/macOS)或%USERPROFILE%\.uv\venvs
目录(Windows)。你可以运行以下命令查看:
Linux/macOS:
ls ~/.uv/venvs
Windows (PowerShell):
Get-ChildItem $env:USERPROFILE\.uv\venvs
方法 2:查找当前目录下的虚拟环境
如果你在项目中使用
uv venv
创建虚拟环境,它通常会存放在当前目录下。例如:ls -d */ | grep "venv"
或者在 Windows 上:
Get-ChildItem -Directory | Where-Object { $_.Name -match "venv" }
目前
uv
还没有直接管理多个环境的功能,建议手动记录已创建的虚拟环境路径。
2. 激活虚拟环境
-
Linux/macOS:
source myenv/bin/activate
-
Windows (PowerShell):
myenv\Scripts\Activate.ps1
3. 安装依赖
uv
作为 pip
的替代品,可以直接安装包:
uv pip install numpy pandas
或者直接使用 uv
安装:
uv install numpy pandas
4. 退出虚拟环境
deactivate
5. 删除虚拟环境
rm -rf myenv
相比 venv
,uv
速度更快,适合日常开发使用。
(5)环境迁移
有时候需要在另一台机器上部署同样的服务,这时候需要配置一样的环境(这时候就体现了docker的优越性)。这是可以借助conda的clone功能实现,
##先对原来机器上的虚拟环境进行打包,一般在的路径为anaconda/envs/xxx
##将上面打包的环境拷贝到新的机器上
conda create -n new_xxx --clone xxx
写在后面:
环境管理工具在 Python 生态系统中主要用于管理依赖项和隔离环境。以下是 uv
, conda
和 virtualenv
的对比:
特性 | uv | conda | virtualenv |
---|---|---|---|
主要用途 | 依赖管理+环境管理 | 依赖管理+环境管理 | 仅环境管理 |
安装方式 | pip install uv | 需安装 Anaconda/Miniconda | pip install virtualenv |
环境隔离 | ✅ 是 | ✅ 是 | ✅ 是 |
依赖管理 | ✅ 内置 pip 替代品 | ✅ 支持 conda 包管理 | ❌ 依赖 pip |
包管理速度 | 🚀 非常快 | 🐢 较慢 | 🐢 较慢 |
占用空间 | 🚀 小 (基于 uv-cache ) | 🐘 大(带完整 Python 运行环境) | 📦 中等 |
Python 版本 | 依赖系统 Python | 依赖 conda 版本的 Python | 依赖系统 Python |
跨语言支持 | ❌ 仅 Python | ✅ 可管理 R, Julia, C 等 | ❌ 仅 Python |
兼容性 | ✅ 兼容 pip 和 venv | ⚠️ 需要 conda 生态 | ✅ 兼容 pip 和 venv |
适用场景:
-
uv:如果你需要一个快速的 Python 依赖管理工具,并且习惯
pip
的工作方式,uv
是一个优秀的替代方案。 -
conda:适用于科学计算(如 NumPy、TensorFlow),尤其是在不同 Python 版本或**非 Python 依赖(如 C 库)**的情况下。
-
virtualenv:适用于轻量级 Python 环境隔离,适合日常 Python 项目开发,特别是和
pip
结合使用。
在安装虚拟环境下,安装项目需要的包时,如在python27下安装numpy时会出现“RuntimeError: Python version >= 3.5 required.”错误,这是由于现在python官方放弃了python2的维护,直接用pip install numpy安装就会出错,直接通过conda install numpy来完成安装。
当我们在虚拟环境下完成一个项目的开发后,假如我们想要移植该项目,此时常见的,我们需要将该项目导入的所有库全部写入到requirements.txt文件中,我们只需要一个命令即可完成,在该环境下,直接pip freeze > requirements.txt就会在当前路径下生成想要的所有库文件了
在新的环境下直接pip install -r requirements.txt即可实现所有文件的安装。
参考博客:
Python虚拟环境配置的两种方法_fcy8023的博客-优快云博客_python 虚拟环境配置(Python虚拟环境配置的两种方法)
python-虚拟环境的创建和管理的三种方式_deapou的博客-优快云博客(python-虚拟环境的创建和管理的三种方式)