自带venv
免安装直接使用
虚拟环境是创建一种隔离的工作空间,在该工作空间中可以安装不同的库,而不影响其他的项目。其中,python自带的venv,就可以很好的创建虚拟环境了。
# 创建虚拟环境
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保存了当前安装的所有包,就可以下一次在其他地方,进行恢复了。
# 保存所有的安装
pip freeze > requirements.txt
# 恢复所有的安装
pip install -r requirements.txt
使用virtualenv
通过pip安装使用
virtualenv是一个第三方库,尤其在python早期发挥了重要作用。它的使用方法和自带的venv几乎相同,因此,近些年的使用逐渐减少。但是,它的出现要早于自带的venv,因此,在较早时期(python3.3之前),创建虚拟环境经常使用该库。
注意:虽然在早期,该库非常重要,但是时至今日,应该优先使用venv。
使用pip安装
# 安装
pip install virtualenv
# 检查是否安装成功
virtualenv --version
创建虚拟环境(与venv使用基本相同)
virtualenv myenv
# 在早期版本中,virtualenv创建虚拟环境时会先复制系统已有的安装包
# 因此,如果需要创建一个不包含安装包的干净环境需要特意指出
virtualenv myenv --no-site-packages # 在现在的版本中,这已经成为了默认选项,无需这样做
# windows系统激活虚拟环境
myenv\Scripts\activate
# linux系统激活虚拟环境
source myenv/bin/activate
# 退出虚拟环境
deactivate
同样的,virtualenv在创建虚拟环境时,也会在当前目录下生成一个虚拟环境的目录,可以直接通过观察看到。
virtualenvwrapper扩展
通过pip安装
# 如果是windows系统,安装virtualenvwrapper-win
# virtualenvwrapper-win通常会自动添加可执行文件,因此通常无需自己配置环境变量
pip install virtualenvwrapper-win
# 对于linux系统,安装virtualenvwrapper
# 需要根据自己的情况配置环境变量
pip install virtualenvwrapper
常用命令
# 创建新的虚拟环境
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一项(选择系统变量还是用户变量根据个人需求),点击“编辑”,在编辑环境变量窗口中点击“新建”,然后添加安装路径。
# 要根据实际安装路径进行填写
C:\ProgramData\Miniconda3
C:\ProgramData\Miniconda3\Scripts
C:\ProgramData\Miniconda3\Library\bin
如果配置都正确的话,那么现在在命令行,应该已经可以使用conda了。所以说,早知今日,何必当初,安装的时候就让它自动添加,就省了很多事情啦。
conda命令
conda更新,首先更新通常是一个好选择
conda update conda
conda常用指令
# 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)。
# conda安装包
conda install 安装包名
# conda搜索包
conda search 安装包名
# conda更新包
conda update 安装包名
# conda卸载包
conda remove 安装包名
# conda查看已安装包
conda list
# conda查看某个环境已安装包
conda list -n 环境名称
环境的导出与恢复
导出环境
conda env export > environment.yml
恢复环境
conda env create -f environment.yml
如果你希望在恢复环境的时候重新命名,那么通过-n
选项,覆盖掉原本的包名即可
conda env create -f environment.yml -n myenv2
总结
在python中存在很多种创建虚拟环境的方式,甚至还远不止介绍的最常见的这三种,不过,通常这三种就能够满足大多数需要了,因此就不继续介绍更多种方法了。
如果你需要快速创建一个虚拟环境,对于虚拟环境的复杂操作要求并不高,那么使用自带的venv就足够了。
如果你希望能够对虚拟环境进行统一的管理,而不是每个项目都要包括一个虚拟环境的目录,那么可以使用virtualenv及其扩展virtualenvwrapper。
如果你不仅希望能够轻松管理安装包,还要进行python自身的版本切换,那么使用Miniconda或者Anaconda都是好的选择。
总之,你可以根据自己的需求,以及个人喜好进行选择,并没有一个固定的答案表明“哪一种是最好的”(但是目前virtualenv以及venv中应该优先考虑venv)。