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

这篇具有很好参考价值的文章主要介绍了使用pipreqs生成requirements文件,并在服务器(矩池云)上通过requirements文件安装环境采坑记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述

今天用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

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

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一样报错)
pipreqs,python,深度学习,服务器,python,深度学习,机器学习
查找网上资料,说遇到这种情况可以输入以下代码来解决:

pip3 show -f pipreqs

然而,在我输入这段代码后,出现了新的报错
pipreqs,python,深度学习,服务器,python,深度学习,机器学习
我明明已经在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文件他会报错,需要先把原有的文件删掉),我们打开这个文件,如下图所示。
pipreqs,python,深度学习,服务器,python,深度学习,机器学习
这里有一些问题,为何一个包会出现两个版本?
于是我查了下我base环境下和DL环境下的matplotlib包的版本

pipreqs,python,深度学习,服务器,python,深度学习,机器学习
pipreqs,python,深度学习,服务器,python,深度学习,机器学习
发现,果然是两个环境中版本不一样,它在生成的时候都生成了。
然后我查了torch包,也是相同的情况,然而,numpy包却情况不同
pipreqs,python,深度学习,服务器,python,深度学习,机器学习
pipreqs,python,深度学习,服务器,python,深度学习,机器学习
在两个环境中,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

然后报错如下图所示:
pipreqs,python,深度学习,服务器,python,深度学习,机器学习

所以说明如果requirement.txt文件里面有两个版本的,会冲突,所以需要删掉冲突的版本,如下图
pipreqs,python,深度学习,服务器,python,深度学习,机器学习
然后出现问题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
这个报错如下图所示:

pipreqs,python,深度学习,服务器,python,深度学习,机器学习

所以说说明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报错如下:

pipreqs,python,深度学习,服务器,python,深度学习,机器学习
我安装的是torch2.0.1,但是他这里提示需要torch2.0.0版本,所以有错。
原因是我在pip的时候没有安装python解释器,无法选择代码的解释器而导致的。

解决方案

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

pipreqs,python,深度学习,服务器,python,深度学习,机器学习
关键:然后先点击右上角运行一次代码,一定要先运行一次代码!!!,此时他会提示没有安装相关的包,然后在终端输入

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. 配置完成之后不要忘了在矩池云中保存环境,方便下次使用。

pipreqs,python,深度学习,服务器,python,深度学习,机器学习

备注

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

pipreqs,python,深度学习,服务器,python,深度学习,机器学习
注意,每一次运行都会生成一个输出日志。

终端常用命令

查看CUDA版本

nvidia-smi

显示当前文件夹下的内容

dir

ls

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

cd /root/log

进入当前盘根目录

cd\

进入上一级目录

cd..

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

tail -f /root/log/run.log

查看输出日志(非循环读取)文章来源地址https://www.toymoban.com/news/detail-820878.html

tail /root/log/run.log

到了这里,关于使用pipreqs生成requirements文件,并在服务器(矩池云)上通过requirements文件安装环境采坑记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包