每个 开发者都踩过的坑!你中了吗?
才成功运行的项目, 换了电脑就出现错误提示? 安装了新的库之后, 旧的项目直接停止运行? 教程里的代码完全相同, 却因为库版本不兼容, 怎么也运行不起来?
别急!这些致使崩溃场景出现的根源, 全都是库版本管理方面做得不妥善!存在不同的项目, 它们对于库版本的需求有着极大差异, 直接进行全局安装库, 就好似在同一间屋子之内放入不同尺寸规格的家具, 冲突会成为必然得出来的结果。
今日分享一套版本管理方案, 此方案涵盖从基础直至进阶, 并且无论面向怎样的新手入门, 还是进阶开发, 它均能够轻松化解高达百分之九十九这般比例的版本冲突之事真正达成“在一处进行配置, 于各个地方能使之运行”这般的状况!
一、基础方案:用 venv 搭建独立虚拟环境(新手首选)
在针对3.3以及高于3.3版本的开发者而言, venv属于那种最为轻量化的、也是最容易上手去操作的虚拟环境工具, 它不需要进行额外的安装动作, 是直接被内置放置在标准库当中的, 并且能够完美适配学习场景以及小型项目的开发过程呢!
核心原理
每个项目都有如同 “独立运行沙盒” 般的虚拟环境, 于其中安装的库, 不会左右全局环境, 亦不会与其他项目的库版本产生冲突, 这就好比给每个项目配置了专属的 “库仓库”。
对于Mac以及Linux通用的实操步骤, 其第一步是, 进入到项目文件夹。
打开终端 / 命令提示符,用cd命令切换到你的项目目录:
# Windows示例cd D:\\
# Mac/Linux示例
cd /Users/xxx//
第二步:创建虚拟环境
输入命令创建名为venv的虚拟环境(名字可自定义,比如):
python -m venv venv项目文件夹在执行之后, 会有一个名为venv的目录多出来, 这个目录中有独立的解释器, 也有作为安装路径的库。
第三步:激活虚拟环境(关键!)
激活后终端会显示(venv)前缀,代表进入专属环境:
需要注意避免踩坑的提醒是: 要是出现提示“对运行脚本加以禁止”这种情况, 那就以具备管理员权限的地位去打开 , 然后输入:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser第四步:安装指定版本的库
激活后安装的库仅在当前环境生效,放心操作:
pip install numpy==1.24.0 # 指定版本pip # 最新版本
第五步:退出虚拟环境
开发完成后,输入命令退出:
deactivate刚入门的新手要注意避坑指南, venv目录是不需要提交到Git里面的, 一定要在.里添加venv/, 这样才能防止上传那些多余的文件;不同的项目需要分别去创建虚拟环境, 是千万别共用的, 不然就缺失了版本隔离的意义!第二, 进阶的方案是这样的: 用.txt这种形式去管理项目的依赖关系。
若讲虚拟环境是“专属仓库”, 那么.txt便是“货物清单”, 一一记录项目全部库的名称以及版本号着呢, 换电脑, 协作开发时都能够一键复现相同的那环境。
为什么需要它?
当你运用==2.0.3完成项目开发后, 同事安装最新版本==2.1.0致使代码出现报错情况? 拥有了.txt, 此类问题便能够直接杜绝!
实操步骤第一步:导出依赖清单
激活虚拟环境后,输入命令导出所有库和版本:
pip freeze > requirements.txt优化技巧:过滤系统自带包,得到更干净的清单:
# Windowspip, 执行“pip wheel”命令, 将结果输出到.txt文件 , 以管道符连接并实现重定向。
# Mac/Linux
pip, 通过grep命令将包含“pip”或者“wheel”的内容排除掉, 然后将结果输出到名为“.txt”的文件当中。
导出后文件内容示例:
numpy==1.24.0==2.0.3
==3.7.1
第二步:一键安装依赖
取得.txt之后, 启动虚拟环境, 键入命令让其自行安装全部指定版本的库。
# 基础版pip -r .txt
# 国内提速版(清华镜像源)
pip -r .txt -i
三、采用特殊的高阶方案, 借助 conda 去管理复杂的环境, 此环境是数据科学领域以及机器学习领域的首选环境。
假如你指向的数据科学、机器学习领域, 时常去安装numpy、scipy这类依靠C/C++编译的库, 那么conda相较于venv更为强大, 它既能管理库, 又能处置非系统依赖, 还能完全解决“安装失败”的痛点!
先装 (轻量化首选)
conda常常会和别的东西捆绑在一起, 然而它的体积十分庞大, 鉴于此推荐安装这样一种(仅仅只包含conda和另外那个东西, 既轻便又实用)的版本: