使用pipreqs生成requirements文件,并在服务器(矩池云)上通过requirements文件安装环境采坑记录

news2024/12/24 2:17:39

目录

  • 问题描述
  • 问题1:
  • 问题2:
    • 发现问题
    • 问题解决
  • 问题3:
  • 问题4:
  • 问题5:
    • 解决方案
  • 关键!!!正常安装成功的操作流程
  • 备注
    • 1.我为何不在vscode的终端中装pipreqs包?
    • 2.在vscode终端中输入conda list 和 在anaconda promot中输入conda list存在不同
    • 3.矩池云查看进程输出日志
    • 终端常用命令

问题描述

今天用requirements文件想在服务器上安装环境,遇到了许多的坑,在这里记录一下,有需要的朋友可以看看这里有没有记录你存在的问题。

问题1:

报错内容:
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/home/ktietz/src/ci/alabaster 161192154452/work!

在网上看到的方法:
在终端上,使用这段代码在自己电脑上的生成requirements文件

pip freeze > requirements.txt

然后将requirement.txt文件上传到服务器上,在服务器上的终端运行下面这段代码,在服务器上安装对应的环境。

pip install -r requirements.txt

这时候报错如下图
在这里插入图片描述
报错内容是不存在这个路径,所以我打开requirement.txt文件,发现文件内容如下,发现这个生成的txt文件并不是我们想要的格式,还生成了一堆奇怪的地址,导致在服务器上无法进行环境安装。
在这里插入图片描述
于是我又查阅网上的资料,有人说可以在终端里运行下面这行代码

pipreqs ./ --encoding=utf-8

注意到这里pipreqs也是一个包,需要使用pip的方式来安装,这就产生了问题二

问题2:

报错内容:
pipreqs : 无法将“pipreqs”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

发现问题

我用的anaconda来管理的环境,我一共有两个环境,一个是自带的base环境,一个是我创建的DL环境(deep learning),打开anaconda promot,分别输入以下代码,分别表示进入DL环境,并在DL环境中安装pipreqs这个包

conda activate DL
pip install pipreqs

之后我在vscode的终端中运行

pipreqs ./ --encoding=utf-8

结果报错:(图中输入的是pipreqs ./,如果输入pipreqs ./ --encoding=utf-8一样报错)
在这里插入图片描述
查找网上资料,说遇到这种情况可以输入以下代码来解决:

pip3 show -f pipreqs

然而,在我输入这段代码后,出现了新的报错
在这里插入图片描述
我明明已经在DL环境里装了pipreqs,而且我vscode的解释器里面也设置的是DL环境,为何说找不到这个包?

问题解决

我猜测,我是在vscode的终端中运行的代码,而终端可能与我选择的解释器无关,所以我是不是在base环境里装一个pipreqs包就可以了呢?
于是,我在anaconda promot中输入以下代码,分别表示退出当前环境(DL),然后在base环境中装pipreqs包

conda deactivate
pip install pipreqs

在base环境中安装pipreqs包成功之后,输入下面代码

pipreqs ./ --encoding=utf-8

之后等待时间有点长,可能需要二三十秒,在文件夹中生成了一个requirements.txt文件(如果文件夹中已有requirements.txt文件他会报错,需要先把原有的文件删掉),我们打开这个文件,如下图所示。
在这里插入图片描述
这里有一些问题,为何一个包会出现两个版本?
于是我查了下我base环境下和DL环境下的matplotlib包的版本

在这里插入图片描述
在这里插入图片描述
发现,果然是两个环境中版本不一样,它在生成的时候都生成了。
然后我查了torch包,也是相同的情况,然而,numpy包却情况不同
在这里插入图片描述
在这里插入图片描述
在两个环境中,numpy的版本均是1.24.3,那么为何requirement.txt里面却有一个1.23.5的版本?
这个可能是个bug,目前还不知道为什么,我采取的方式是手动删除一个版本,这就引出了问题3

问题3:

报错内容:
ERROR: Cannot install matplotlib3.7.0 and matplotlib3.7.1 because these package versions have conflicting dependencies.

我是通过vscode的ssh连接的远程,我在远程界面输入

pip install -r requirements.txt

然后报错如下图所示:
在这里插入图片描述

所以说明如果requirement.txt文件里面有两个版本的,会冲突,所以需要删掉冲突的版本,如下图
在这里插入图片描述
然后出现问题4,仍然会报错

问题4:

报错内容:
RROR: Could not find a version that satisfies the requirement torch2.0.1+cu117 (from versions: 1.7.1, 1.8.0, 1.8.1, 1.9.0, 1.9.1, 1.10.0, 1.10.1, 1.10.2, 1.11.0, 1.12.0, 1.12.1, 1.13.0, 1.13.1, 2.0.0, 2.0.1)ERROR: No matching distribution found for torch2.0.1+cu117
这个报错如下图所示:

在这里插入图片描述

所以说说明torch2.0.1+cu117这个版本无法安装,这提示我们需要把后缀+cu117删除,此外torchvision0.15.2+cu117 这句话中的+cu117也需要删除

删除之后再执行

pip install -r requirements.txt

出现问题5报错

问题5:

报错内容:
ERROR: pip’s dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.torchaudio 2.0.1 requires torch==2.0.0, but you have torch 2.0.1 which is incompatible.

问题5报错如下:

在这里插入图片描述
我安装的是torch2.0.1,但是他这里提示需要torch2.0.0版本,所以有错。
原因是我在pip的时候没有安装python解释器,无法选择代码的解释器而导致的。

解决方案

在服务其中安装python插件,如下图所示
在这里插入图片描述
安装之后,将解释器选择为矩池云中有的这个python3.10.9这个版本(其他版本行不行我暂时没试)

在这里插入图片描述
关键:然后先点击右上角运行一次代码,一定要先运行一次代码!!!,此时他会提示没有安装相关的包,然后在终端输入

pip install -r requirements.txt

这是发现没有报错,安装成功!!
随后即可正常运行代码

关键!!!正常安装成功的操作流程

下面总结一下使用vscode ssh 在矩池云服务器上配置环境的正确流程

  1. 租用矩池云服务器,通过vscode和ssh连接到服务器。这一步可参考矩池云的官方文档矩池云文档

  2. 在自己的电脑上使用以下代码生成requirements文件(需要先安装pipreqs包),删除版本冲突的内容,此外出现问题请参考上面几小节提到的。

pipreqs ./ --encoding=utf-8
  1. 将生成的requirements.txt文件上传至矩池云网盘,通过vscode和ssh连接到服务器之后,先安装python插件,选择解释器,再运行你想要运行的文件,此时会提示没有相关的module,是因为我们还没有配环境。但是一定要先运行一次文件!!!

  2. 运行文件过后,在终端中输入,此时即可成功安装

pip install -r requirements.txt
  1. 此外一些vscode扩展,比如ipykernel(使代码可以在交互环境中运行),在需要的时候,vscode会提醒你进行安装

  2. 配置完成之后不要忘了在矩池云中保存环境,方便下次使用。

在这里插入图片描述

备注

1.我为何不在vscode的终端中装pipreqs包?

理论上,在vscode中输入以下代码,也可以装pipreqs这个包

pip install pipreqs

但是我实测,在vscode中输入代码装包,会出现无法连接的情况,导致超时。

2.在vscode终端中输入conda list 和 在anaconda promot中输入conda list存在不同

3.矩池云查看进程输出日志

输入以下代码可以查看终端中的输出日志

tail -f /root/log/run.log

这句话加了-f,意思是读取正在改变的日志,而且实时更新也就是循环读取,这也就意味着输入此段代码后,输入别的代码都没用,因为终端正在读取此日志。
需要配合ctrl+c退出正在查看状态。

此外如下图所示,是矩池云提供的读取日志的方法,这种方法是查看一次日志,不会进入正在读取状态,效果等价于tail /root/log/run.log

在这里插入图片描述
注意,每一次运行都会生成一个输出日志。

终端常用命令

查看CUDA版本

nvidia-smi

显示当前文件夹下的内容

dir

ls

进入某一目录(举例,进入/root/log)

cd /root/log

进入当前盘根目录

cd\

进入上一级目录

cd..

查看输出日志(循环读取)

tail -f /root/log/run.log

查看输出日志(非循环读取)

tail /root/log/run.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/630879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud构建微服务架构:服务注册与发现

Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。 Spring Cloud包…

面了一个来华为要22K的人,啥都不会,还不如找个应届生来代替···

最近有个在华为的朋友跟我分享了他面试招人的过程,感觉华为还是挺难进的。面试前后进行了20天左右,包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说,80%的人都会栽在第一轮面试。 其实,第一轮的电话面试除…

ASEMI代理英飞凌TLE7244SL功率电子开关,TLE7244SL参数

编辑-Z TLE7244SL参数描述: 型号:TLE7244SL 数字电源电压VDD:3.0 V ~ 5.5 V 模拟电源电压VDDA:4.5 V ~ 5.5 V 每个通道在Tj150C时的最大导通状态电阻RDS(ON,max):1.7 Ω 额定负载电流IL (nom):290 mA…

Nginx【反向代理负载均衡动静分离】--中

Nginx【反向代理负载均衡动静分离】–中 负载均衡-配置实例 示意图 负载均衡配置-思路分析/图解 示意图 负载均衡配置规则 负载均衡就是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快 linux 下有Nginx、LVS、Haproxy 等等服务可…

在Apifox中,使用后置脚本显示响应结果reponse中的base64图片

背景 在使用Apifox去请求有图片的接口时,我想要请求成功的同时,可以显示出来图片,这个时候就开始百度找官方文档。最终发现可以使用后置脚本显示reponse中的图片。 方案 如下图所示,接口请求成功后,返回的json结构为…

【Spring Boot 初识丨四】主应用类

上一篇讲了 Spring Boot 的启动器 本篇来讲一讲 主程序类 Main Application Class 及注解 Spring Boot 初识: 【Spring Boot 初识丨一】入门实战 【Spring Boot 初识丨二】maven 【Spring Boot 初识丨三】starter 主程序类 一、定义二、注解2.1 SpringBootApplicati…

秋招指南(菜狗版)-Java前/后端开发方向

期末考试结束,菜的人还在享受假期,即将进大厂的已经在学习了(狗头) 作为经受去年秋招摧残的老学姐,给大家带来一些秋招学习的小经验,希望可以帮助大家避免一些求职路上的坑,能快速顺利地找到心仪…

论文笔记与实战:对比学习方法MOCO

目录 1. 什么是MOCO2. MOCO是干吗用的3. MOCO的工作原理3.1 一些概念1. 无监督与有监督的区别2. 什么是对比学习3. 动量是什么 3.2 MOCO工作原理1. 字典查找2. 如何构建一个好的字典3. 工作流程 3.3 (伪)代码分析 4. 其他一些问题5. MOCO v2和MOCO v35.1…

Nginx【反向代理负载均衡动静分离】--下

Nginx【反向代理负载均衡动静分离】–下 Nginx 工作机制&参数设置 master-worker 机制 示意图 图解 一个master 管理多个worker 一说master-worker 机制 ● 争抢机制示意图 图解 一个master Process 管理多个worker process, 也就是说Nginx 采用的是多进程结构, 而…

字节8年经验总结:13 条自动化测试框架设计原则(建议收藏)

1.代码规范 测试框架随着业务推进,必然会涉及代码的二次开发,所以代码编写应符合通用规范,代码命名符合业界标准,并且代码层次清晰。特别在大型项目、多人协作型项目中,如果代码没有良好的规范,那么整个框…

leetcode109. 有序链表转换二叉搜索树(java)

有序链表转换二叉平衡搜索树 leetcode109. 有序链表转换二叉搜索树题目描述 解题思路代码演示链表和二叉树专题 leetcode109. 有序链表转换二叉搜索树 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/convert-sorted-lis…

QCameraViewfinder的使用

目录 引言核心代码完整代码 引言 本文是简单使用Qt快速使用摄像头完成截图等工作,主要涉及QCamera、QCameraViewfinder、QCameraImageCapture这三个类。QCamera通过相机的信息创建,用于控制开始接收图形、停止接收图像。QCameraViewfinder则是图像的展示…

(1Gbit)MT28EW01GABA1LPC-0SIT、MT28EW01GABA1HPC-0SIT FLASH - NOR 存储器

MT28EW01GABA1LPC-0SIT、MT28EW01GABA1HPC-0SIT 1Gbit并行NOR闪存器件具有较高的密度、就地执行 (XiP) 性能和架构灵活性,可满足汽车、消费类和移动产品的设计要求。该器件非常适合用于GPS/导航、汽车后视摄像头、手机、智能手机和电子阅读器。该器件还具有较宽的温…

【小沐学Python】Python实现turtle绘画

文章目录 1、简介2、接口说明2.1 海龟动作2.1.1 移动和绘制2.1.2 获取海龟的状态 2.2 画笔控制2.2.1 绘图状态2.2.2 颜色控制2.2.3 填充2.2.4 更多绘图控制 2.3 TurtleScreen/Screen 方法2.3.1 窗口控制2.3.2 使用屏幕事件2.3.3 Screen 专有方法 3、示例测试3.1 Turtle star3.2…

关于proxy的较深入研究

关于proxy的较深入研究 proxy是什么控制台打印proxy,展示一下vue3中的prxoy和es6的proxy有何不同?proxy对js和vue3来说有什么含义?proxy的封装机制 proxy是什么 Proxy是ES6中新增的一个对象,它可以用来代理另一个对象&#xff0c…

微服务eureka和nacos

服务远程调用 /*** 创建RestTemplate并注入Spring容器* return*/Beanpublic RestTemplate restTemplate(){return new RestTemplate();} Autowiredprivate RestTemplate restTemplate;public Order queryOrderById(Long orderId) {// 1.查询订单Order order orderMapper.fin…

关于调试别人的bug中发现的细节问题1:Switch...case...分支,永远只选择第一个分支

1、Switch…case…分支,永远只选择第一个分支: 原因:switch()里面的不是传入的变量,m_curWindowType是个成员变量,一直是初始值。他喵的,不知道谁写的下面的代码,大晚上的我也没有细看&#xff…

13.3寸_Wifi标签功耗电流计算-单面屏幕-1.8V的Flash测试

13.3寸Wifi标签不工作的时候电流的消耗主要来自两部分: 待机时,醒来监听时。经过测量,13.3寸Wifi标签的待机电流是7.13uA , 醒来监听的峰值电流是51.6 mA。13.3寸Wifi标签系统设定每间隔1秒醒来一次监听是否有唤醒数据。充电锂电池电池的容量…

00后跳槽到我们公司拿了25K,“躺平”两个字骗了我好久···

都说00后已经躺平了,但是有一说一,该卷的还是卷。前段时间我们部门就来了个00后,工作都还没两年,跳到我们公司起薪25K,都快接近我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。最近和他…

【配置环境】Windows下C/C++第三方库管理工具vcpkg安装和使用

一,vcpkg简介 vcpkg是微软公司开发的一个开源C包管理工具,它可以很方便的帮助您在 Windows、 Linux 和 MacOS 上下载,编译和安装C 第三方库。它具有自动解决依赖关系的能力,并且支持多种目标架构和平台。提供了超过1500个C库的预…