使用virtualenv/Anaconda/Miniconda创建python虚拟环境

自带venv

免安装直接使用

虚拟环境是创建一种隔离的工作空间,在该工作空间中可以安装不同的库,而不影响其他的项目。其中,python自带的venv,就可以很好的创建虚拟环境了。

bash 复制代码
# 创建虚拟环境
python -m venv venv

# windows系统激活虚拟环境
venv\Scripts\activate

# linux系统激活虚拟环境
source venv/bin/activate

# 退出虚拟环境
deactivate

# 创建自选名称的虚拟环境
python -m venv my_venv
my_venv\Scripts\activate

venv在创建虚拟环境时,会在当前目录下生成一个虚拟环境的目录,可以直接通过观察看到。

依赖的导出与恢复

如果我们通过requirements.txt保存了当前安装的所有包,就可以下一次在其他地方,进行恢复了。

bash 复制代码
# 保存所有的安装
pip freeze > requirements.txt

# 恢复所有的安装
pip install -r requirements.txt

使用virtualenv

通过pip安装使用

virtualenv是一个第三方库,尤其在python早期发挥了重要作用。它的使用方法和自带的venv几乎相同,因此,近些年的使用逐渐减少。但是,它的出现要早于自带的venv,因此,在较早时期(python3.3之前),创建虚拟环境经常使用该库。

注意:虽然在早期,该库非常重要,但是时至今日,应该优先使用venv。

使用pip安装

bash 复制代码
# 安装
pip install virtualenv

# 检查是否安装成功
virtualenv --version

创建虚拟环境(与venv使用基本相同)

bash 复制代码
virtualenv myenv

# 在早期版本中,virtualenv创建虚拟环境时会先复制系统已有的安装包
# 因此,如果需要创建一个不包含安装包的干净环境需要特意指出
virtualenv myenv --no-site-packages  # 在现在的版本中,这已经成为了默认选项,无需这样做

# windows系统激活虚拟环境
myenv\Scripts\activate

# linux系统激活虚拟环境
source myenv/bin/activate

# 退出虚拟环境
deactivate

同样的,virtualenv在创建虚拟环境时,也会在当前目录下生成一个虚拟环境的目录,可以直接通过观察看到。

virtualenvwrapper扩展

通过pip安装

bash 复制代码
# 如果是windows系统,安装virtualenvwrapper-win
# virtualenvwrapper-win通常会自动添加可执行文件,因此通常无需自己配置环境变量
pip install virtualenvwrapper-win

# 对于linux系统,安装virtualenvwrapper
# 需要根据自己的情况配置环境变量
pip install virtualenvwrapper

常用命令

bash 复制代码
# 创建新的虚拟环境
mkvirtualenv myenv

# 退出虚拟环境
deactivate

# 切换虚拟环境
workon myenv

# 列出所有虚拟环境
lsvirtualenv

# 删除虚拟环境
rmvirtualenv myenv

mkvirtualenv在创建虚拟环境时,不会直接在当前目录下生成虚拟环境的目录,不可以直接在当前目录看到。

关于虚拟环境的具体存储位置,通常在使用lsvirtualenv列出所有虚拟环境的时候可以显示。

使用conda

conda介绍

Conda是一个跨平台的开源包管理和环境管理工具,它既可以安装,更新软件包,也可以创建,管理开发环境。

Anaconda是一个功能全面的发行版,已经包括了conda,python,以及众多安装包,目的是为了帮助初学者一次性解决逐个安装安装包的麻烦,因此,anaconda的体积很大。

Miniconda是Anaconda的简化版本,包含了少量安装包,因此体积小了很多。

所以实际上,conda是核心工具,Anaconda以及Miniconda都包含了conda。如果是为了创建虚拟环境,那么选择哪一个都是可行的,因为他们都包括了conda。

Conda的github地址

conda安装

下面以Miniconda为例,介绍一下安装过程。(Anaconda的使用方法与Miniconda相同)

首先,下载一个适合的版本:Miniconda下载地址

如果你需要Anaconda的话,那么选择:Anaconda下载地址

然后按照提示安装即可,需要注意的是,最好要勾选Add Anaconda/Miniconda to my PATH environment variable,以便于可以在命令行中使用。

配置环境变量(可选)

虽然反复叮嘱,要记得在安装时添加到环境变量,但是总有忘记的可能,或者根本没找到这个选项,如果真的忘记了,那么只能手动配置环境变量了。

首先要确认安装路径,比如说,"C:\ProgramData\Miniconda3"是一个可能的默认路径。(如果是Anaconda的话,则需要使用Anaconda的路径,如果是自选安装路径的话,那么就要使用实际的安装路径)

右键点击"我的电脑"(或者此电脑),打开属性菜单,下拉找到"高级系统设置"

在高级系统设置中,找到环境变量一项,找到其中的Path一项(选择系统变量还是用户变量根据个人需求),点击"编辑",在编辑环境变量窗口中点击"新建",然后添加安装路径。

bash 复制代码
# 要根据实际安装路径进行填写
C:\ProgramData\Miniconda3
C:\ProgramData\Miniconda3\Scripts
C:\ProgramData\Miniconda3\Library\bin

如果配置都正确的话,那么现在在命令行,应该已经可以使用conda了。所以说,早知今日,何必当初,安装的时候就让它自动添加,就省了很多事情啦。

conda命令

conda更新,首先更新通常是一个好选择

bash 复制代码
conda update conda

conda常用指令

bash 复制代码
# conda创建虚拟环境,并且安装python3.13
# 使用conda的时候可以轻松创建和管理多个不同的python版本
# 你无需担心你的系统中没有安装过这个版本
conda create -n myenv python=3.13

# conda创建虚拟环境,但是无需安装新的python
conda create -n myenv2

# conda激活虚拟环境
conda activate myenv

# conda退出虚拟环境
conda deactivate

# conda列出环境
conda env list

# conda删除环境
conda remove -n myenv --all

# conda重新初始化(激活环境时遇到问题,执行该命令可能有效果)
conda init

在使用conda的时候,应当使用conda安装以及管理包,这种情况下避免混用pip是一个好的提议(使用conda时,总是优先使用conda安装,除非conda没有该安装包,才考虑pip)。

bash 复制代码
# conda安装包
conda install 安装包名

# conda搜索包
conda search 安装包名

# conda更新包
conda update 安装包名

# conda卸载包
conda remove 安装包名

# conda查看已安装包
conda list

# conda查看某个环境已安装包
conda list -n 环境名称

环境的导出与恢复

导出环境

bash 复制代码
conda env export > environment.yml

恢复环境

bash 复制代码
conda env create -f environment.yml

如果你希望在恢复环境的时候重新命名,那么通过-n选项,覆盖掉原本的包名即可

bash 复制代码
conda env create -f environment.yml -n myenv2

总结

在python中存在很多种创建虚拟环境的方式,甚至还远不止介绍的最常见的这三种,不过,通常这三种就能够满足大多数需要了,因此就不继续介绍更多种方法了。

如果你需要快速创建一个虚拟环境,对于虚拟环境的复杂操作要求并不高,那么使用自带的venv就足够了。

如果你希望能够对虚拟环境进行统一的管理,而不是每个项目都要包括一个虚拟环境的目录,那么可以使用virtualenv及其扩展virtualenvwrapper。

如果你不仅希望能够轻松管理安装包,还要进行python自身的版本切换,那么使用Miniconda或者Anaconda都是好的选择。

总之,你可以根据自己的需求,以及个人喜好进行选择,并没有一个固定的答案表明"哪一种是最好的"(但是目前virtualenv以及venv中应该优先考虑venv)。

相关推荐
云和数据.ChenGuang5 分钟前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
川石课堂软件测试42 分钟前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
万化冥合1 小时前
PyBox屏幕键盘如何辅助演示键盘操作?
python·计算机外设
车软学堂1 小时前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化
天空依然蔚蓝1 小时前
分享一个自动检测网站在线状态的python程序
python·运维开发·1024程序员节
岁月宁静2 小时前
一个 AI 项目从本地到上线,要经过哪些步骤?全流程讲清楚
python·docker·agent
codists3 小时前
《crafting interpreters》阅读笔记:p45-p45
python
曲径海盗4 小时前
【Python 学习第 41 天】for 循环
python·学习笔记·编程入门
摇滚侠4 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
沧海一笑-dj4 小时前
【Python】Python学习笔记-模块与包
python·pip·模块·包·python包·python模块·包与模块