一 应用场景
python开发的虚拟环境(Virtual Enviroment),主要是以目录作为单位分别保存不同的python解释器与第三方模块的一种技术。在开发或者学习中,我们会遇到在一台开发机子中,运行多个项目的情况,有时候还会出现每个项目的python解析器或者依赖包的版本有差异。使用虚拟环境,可以让一台开发机子,同时安装多个不同的python解释器,也可以实现同时安装同一个模块的多个不同版本。
Python虚拟环境常见的工具为:
- Virtualenv
- Anaconda
- venv
- pipenv
二 虚拟环境Virtualenv
1 安装虚拟环境的依赖库
pip install virtualenv
2 安装虚拟环境统一管理工具,一个外壳操作库, 提供了一系列的全局命令
pip install virtualenvwrapper
3 配置环境变量
# /etc/profile末行加入以下两行 export workon_home=/data/envs # 设置 virtualenv 的统一管理目录 export virtualenvwrapper_python=/usr/bin/python3 # 指定python解释器 # 终端执行 whereis python 可查看
source /etc/profile # 环境变量生效
4 执行 virtualenvwrapper 安装脚本
source /usr/bin/virtualenvwrapper.sh # 可通过find / -name virtualenvwrapper.sh 查看具体位置
5 创建一个 my_env 虚拟环境,并切换到当前虚拟环境。一个虚拟环境就是一个目录
mkvirtualenv my_env
6 在虚拟环境内部退出环境
deactivate
7 删除指定名称的虚拟环境[慎重使用,删除前建议备份]
rmvirtualenv <虚拟环境名称>
Virtualenv的缺点:
-
虚拟环境中的Python解释器必须是当前操作系统中已经存在的。
-
每创建一个新的虚拟环境目录,都会把解释器多复制一份到当前解释器目录下。
Virtualenv相关命令:
命令 | 参数选项 | 描述 |
---|---|---|
workon | 列出当前操作系统中所有的python虚拟环境(一个虚拟环境就是一个目录) | |
workon <虚拟环境名称> | 进入指定名称的虚拟环境中, 路径左边就会出现虚拟环境名称, 在有虚拟环境的名称时,终端下所有基于pip安装的python包和python环境都会保存对应虚拟环境的目录下 | |
mkvirtualenv <虚拟环境名称> |
-p 指定python解析器版本 |
创建一个指定名称的虚拟环境,一个虚拟环境就是一个目录.这个目录里面默认就有一个独立python解释器。 |
deactivate | 在虚拟环境内部退出环境 | |
pip freeze | 列出当前环境下开发者使用pip安装的包列表,作用类似于pip list,但是比pip list好用 | |
pip freeze > ./requirements.txt | requirements.txt是约定的.强烈建议固定这个名字 | 备份虚拟环境中的所有依赖包列表并保存到执行名称的文件中,这个文件名一般就叫requirements.txt |
pip install -r ./requirements.txt | 还原备份的虚拟环境包列表,pip 会安装会读取requirements.txt文件中每一行内容,并根据内容安装对应版本的python包。 | |
rmvirtualenv <虚拟环境名称> | 删除指定名称的虚拟环境[慎重使用,删除前建议使用requirements.txt备份] |
三 虚拟环境Anaconda【重点】
conda是为了解决传统的虚拟环境问题而出现的虚拟环境管理工具,conda在virtualenv基础上,提取了公共代码保存到一个公共目录,独立代码分离开来的模式。解决了virtualenv的解释器复制问题,同时conda还可以通过自动管理python解释器的功能,允许我们创建虚拟环境目录时自由的选择不同的python解释器版本。
conda一共有2个版本:miniconda与anaconda。anaconda是conda的完整版本,内置了将近300个关于服务端开发,人工智能,数据分析,爬虫,测试,运维等常用第三方模块。而miniconda则是conda的简单版本,内置了将近30个常用第三方模块。
conda下载地址:https://www.anaconda.com/products/distribution#Downloads
创建一个 my_env 虚拟环境
conda create -n <虚拟环境名称> python=3.10# 创建一个 my_env 虚拟环境,设置当前虚拟环境的python版本,如果本地没有会自动下载安装
''' 参数: <包名1>==<版本号> <包名2> ... <包名n> # 表示创建虚拟环境时同时安装一个或多个指定第三方包
--clone <旧的虚拟环境名称> # 克隆虚拟环境 '''
2 进入/切换到指定名称的虚拟环境
conda activate <虚拟环境名称>
3 安装Django基本模块
pip install django==4.0 -i https://pypi.douban.com/simple/
4 在虚拟环境内部退出环境
conda deactivate
5 删除指定名称的虚拟环境[慎重使用,删除前建议备份]
conda remove -n <虚拟环境名称> --all
6 卸载 anaconda的方式
sudo rm -rf /xx/anaconda3 # 查看anaconda的安装目录 conda info | grep 'base environment' # 打开用户家目录下的环境变量信息文件,并删除文件中与conda相关的环境变量信息。 sudo vim ~/.bashrc
conda相关命令
命令 | 描述 |
---|---|
conda -V | 查看conda版本 |
conda info | 查看当前Anaconda的系统配置信息 |
conda env list | 列出当前系统中所有虚拟环境,环境列表左边* 号表示当前所在环境, 也可以使用conda info -e 查看,注意:conda安装到本地以后,默认就提供了一个全局版本的虚拟环境,叫base |
conda create -n <虚拟环境名称> python=<python版本号> <包名1>==<版本号> | 新建虚拟环境,-n表示设置当前虚拟环境的名称, python表示设置当前虚拟环境的python版本,如果本地没有会自动下载安装 表示创建虚拟环境时同时安装一个或多个指定第三方包 |
conda create -n <新的虚拟环境名称> --clone <旧的虚拟环境名称> | 克隆虚拟环境 |
conda activate <虚拟环境名称> | 进入/切换到指定名称的虚拟环境,如果不带任何参数,则默认回到全局虚拟环境base 中 |
conda deactivate | 退出当前虚拟环境 |
conda install -n <虚拟环境名称> <包名1>==<版本号> | 在虚拟环境外部,给指定虚拟环境安装或更新一个或多个指定包 。conda自带库文件,如果是最新的版本的包,conda install无法安装,则可以使用pip install安装 |
conda install <包名1>==<版本号> 不要调用pip安装(联网安装),否则会变成全局安装 |
在虚拟环境内部,给当前虚拟环境安装或更新一个或多个指定包。 |
conda install <包名1>==<版本号> -c conda-force | 在虚拟环境内部,指定下载服务器源给当前虚拟环境安装或更新一个或多个指定包 |
conda remove -n <虚拟环境名称> <包名1>==<版本号> | 在虚拟环境外部,给指定虚拟环境卸载一个或多个指定包 |
conda remove <包名1>==<版本号> | 在虚拟环境内部,给当前虚拟环境卸载一个或多个指定包 |
conda remove -n <虚拟环境名称> --all | 删除指定虚拟环境,并卸载该环境中所有指定包 |
conda env export > environment.yaml | 导出当前虚拟环境的Anaconda包信息到环境配置文件environment.yaml中 |
conda env create -f environment.yaml | 根据环境配置文件environment.yaml的包信息来创建新的虚拟环境 |
conda update --prefix <anaconda安装目录> anaconda | 更新Anaconda的版本。 先回到base环境,再执行conda update,系统会自动提示完整并正确的命令 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)