[debug] 开源项目的本地使用:使用pip安装的函数库不能被anaconda和pycharm使用+visdom使用 +路径问题


本人在GitHub上下载了一个开源的项目。
Hyperspectral-Classification

将项目部署到本地的完整版尝试

项目文件下载

进入网址之后会点击clone or download,再点击download ZIP,下载得到一个压缩包,然后解压得到文件夹Hyperspectral-Classification-master

PyCharm中新建项目

打开PyCharm,在PyCharm的项目路径PycharmProjects单独新建了一个project,选择的是已有的环境。
在这里插入图片描述

下载的项目文件转移到PyCharm的项目文件

然后将下载解压后的文件夹Hyperspectral-Classification-master内的所有文件移动到location的路径中,我这里是C:\Users\73416\PycharmProjects\HSIproject
在这里插入图片描述

安装项目需要的相应版本的函数库

项目对于几个第三方函数库的版本有要求,存放于一个.txt文件requirements.txt中。
在这里插入图片描述
之后在PyCharm中打开main.pyPyCharm会自动提醒你不满足requirements.txt的要求的函数库有哪几个。
在这里插入图片描述
由上图可知,我有几个函数库并未安装:

  • spectral:版本==0.19
  • visdom:版本>=0.1.5
  • torchsummary:版本>=1.5

此外PyCharm会询问你是不是通过conda来安装这些包(install requirements),这种方法和在命令行窗口输入命令是一样的。
但是在三个函数库,通过conda安装是失败的。
在这里插入图片描述
报错的原因是PackagesNotFoundError: The following packages are not available from current channels:,其实就是conda没有可行的下载路径。
简单来说,就是通过conda是无法直接下载这三个函数库的。

之后我转而通过pip来下载这三个函数库,是可以下载成功的。
在这里插入图片描述
但是在应用Anaconda环境的PyCharm中,或者在Anaconda prompt中输入conda list,都找不到下载好的torchsummary函数库。

直接通过pip下载的函数库,在Anaconda中不能使用的原因是:
在你下载anaconda之前,系统就有一个pip,通过这个pip下载的函数库会储存到它相应的路径,我们称为路径1
在下载Anaconda之后,通过conda下载的函数库会储存到conda的环境下,我们称为路径2
下载Anaconda之前系统只存在路径1,所以通过pip下载的函数库,肯定不会存储在Anaconda路径2
这也就是为什么pip下载的函数库,在无法被使用conda环境的PyCharm使用。

但是,Anaconda里也有内置的pip,通过这个pip可以把函数库下载到conda的环境。也就是说,在下载了Anaconda之后,系统里就有两个pip

  • 下载Python之后产生的pip,下载路径是Python的环境。
  • 下载Anaconda之后产生的pip,下载路径是conda的环境。

但是系统默认的pipPythonpip,我们平时使用的是conda环境的IDE PyCharm,但是默认的pip下载的函数库不能被PyCharm使用。

我找到的解决方法有三种:

  • 将默认的pip由Python的pip修改为Anaconda的pip。
  • 把Python的pip下载的函数库,手动移动到Anaconda的pip的下载路径。
  • 直接使用Anaconda的pip下载函数库。

本博客使用的是第三种方法:直接使用Anaconda的pip下载函数库。
首先要找到Anaconda的Scripts文件夹的路径,我的路径是E:\Anaconda\Scripts,这个取决于Anaconda的安装路径。
之后打开命令行,输入cd 文件路径,我这里是cd E:\Anaconda\Scripts
在这里插入图片描述
再输入文件所在的磁盘,我这里是E:,得到下面这个界面。
在这里插入图片描述
之后再输入pip的安装命令,pip install 函数库名,安装成功得到下面的界面。
在这里插入图片描述
要检验所下载的函数库是不是位于conda的环境下。先打开Anaconda prompt。
在这里插入图片描述
然后输入conda list,查看conda环境下的函数库。
在这里插入图片描述
可以看到conda的环境下已经有了torchsummary这个函数库。
另外从PyCharm也可以看到。
在这里插入图片描述
做完这些之后,再看main.py就不存在缺少函数库的报错了。
在这里插入图片描述

开启visdom

之后按照GitHub的步骤,使用visdom。
首先打开命令行窗口,然后输入python -m visdom.server
在这里插入图片描述
然后访问网址http://localhost:8097。得到这个界面。
在这里插入图片描述

运行main.py文件

解决No module named 'torch'的报错

然后在命令行窗口输入代码运行main.py文件,python 文件路径\main.py --model nn --dataset PaviaU --training_sample 0.1 --cuda 0。我这里是python C:\Users\73416\PycharmProjects\HSIproject\main.py --model nn --dataset PaviaU --training_sample 0.1 --cuda 0
但是出现了报错:No module named 'torch'
在这里插入图片描述

但是我已经使用Anaconda的pip安装了呀,检验一下。打开命令行,使用Anaconda的pip安装torch在这里插入图片描述
然后告诉我:requirement already satisfied。说明这个函数库已经被安装了。
直觉告诉我这又是路径的问题,百度和CSDN查阅一波确实是路径的问题。要通过代码把根目录rootpath加入到搜索路径sys.path下。

import sys,os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)

然后再在命令行输入python C:\Users\73416\PycharmProjects\HSIproject\main.py --model nn --dataset PaviaU --training_sample 0.1 --cuda 0来运行main.py文件。
结果发现还是不行,一样是No module named 'torch'

然后我明白了,上面这行代码是解决项目内其他模块无法被调用的问题,通过将整个项目文件的路径加入到搜索路径来解决。而显然torch并不应该在项目文件的路径。所以这个问题依旧存在。(其实就算torch可以被正常调用,当main.py函数调用项目文件的其他模块(自己定义的函数)的时候,也会出现No module named XXX的错误,这里只是提前解决了这个问题)。

这时我决定直接查看torch的路径,然后将这个路径加入搜索路径。
在PyCharm界面输入代码torch,会返回torch所在的位置。在这里插入图片描述
可以看到我这里torch的路径是E:\\Anaconda\\lib\\site-packages\\,然后在之前的增加修改路径的代码中加入sys.path.append('E:\\Anaconda\\lib\\site-packages\\')
这部分最终的代码如下:

import sys,os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
sys.path.append('E:\\Anaconda\\lib\\site-packages\\')

需要注意的是,这段代码添加的位置是main.py的开头(import XXX的前面),但是由于import _future_需要放在最开头的位置,所以这段代码插入的位置是import _future_之后,import XXX之前。
在这里插入图片描述
至此,再在命令行用python C:\Users\73416\PycharmProjects\HSIproject\main.py --model nn --dataset PaviaU --training_sample 0.1 --cuda 0运行main.py,不再出现No module named 'torch'的错误。

运行main.py之前要先打开visdom

但是出现了另一个报错信息ConnectionRefusedError
在这里插入图片描述
可以看到错误类型是ConnectionRefusedError目标计算机积极拒绝,无法连接。我猜测是visdom的原因,因为我们需要http://localhost:8097去响应我们的操作。
然后发现自己在运行main.py的时候,并没有使用python -m visdom.server

于是我关掉了所有命令行,先打开一个命令行输入python -m visdom.server在这里插入图片描述
然后再打开一个命令行,输入python C:\Users\73416\PycharmProjects\HSIproject\main.py --model nn --dataset PaviaU --training_sample 0.1 --cuda 0运行main.py,不再出现ConnectionRefusedError的错误。输入python -m visdom.server的命令行也发生变化。
在这里插入图片描述

解决数据集文件夹的找不到路径的报错

但是又出现了另一个错误:FileNotFoundError在这里插入图片描述
查看响应的代码,发现是在创建数据集文件夹的时候,找不到路径。FileNotFoundError系统找不到指定的路径。:'./Datasets/Paviau/'

我的第一个想法是,既然系统找不到'./Datasets/Paviau/'的路径,那我就参照GitHub的文件夹示例创建这个路径。于是我创建了如下的文件夹。
在这里插入图片描述
然后再次在命令行运行main.py,结果依旧找不到路径。在这里插入图片描述
这时我意识到是路径的问题(没错又是路径的问题!)。

这时我首先怀疑的是,是不是我的文件夹创建的方式不对,导致系统找不到相应的路径。
为了验证这个问题,我在C盘手动查找./Datasets/Paviau/这个路径,发现是可以找到的(当时只有Paviau这个文件夹,其他两个.mat文件是程序运行的时候下载的数据集,当时并没有它俩)。
在这里插入图片描述
接下来,我就怀疑是程序指定的搜索路径的问题。
在这里插入图片描述
默认的搜索路径是./,也就是不论前缀。
这时候我突然想起来,当我手动查找./Datasets/Paviau/这个路径时,直接在C盘查找会耗费特别特别长的时间,直到我最后手动停止也没有找到。后来我指定了在项目文件夹下面找,才在短时间内找到了(用了几秒)。
而程序从运行到报错的时间,小于系统在C盘查找的时间需要的时间。换句话说,系统是直接在整个系统盘找这个路径,找了一段时间没找到,返回了FileNotFoundError的错误,但是如果时间足够长的话是可以找得到的(我认为这其实是程序的保护机制)。

所以我在程序中强制修改了查找路径,从默认的./改到我创建Datasets文件夹的项目路径C:\\Users\\73416\\PycharmProjects\\HSIproject\\Datasets\\(修改target_folder)。
在这里插入图片描述
然后把Datasets下的子文件夹全部删除(下载数据集的时候会自行创建),然后再命令行输入python C:\Users\73416\PycharmProjects\HSIproject\main.py --model nn --dataset PaviaU --training_sample 0.1 --cuda 0来运行main.py
成功!
在这里插入图片描述

解决内存不够的报错

第二天我再运行的时候,跑到一半又出现了一个报错:
在这里插入图片描述
我当时真的是百思不得其解,完全不知道这是什么意思,网上也查不到。
直到我点开了computer,发现我的C盘一点空间的不剩了(剩余0字节)。

这时候我怀疑是不是我C盘空间不够的问题。
于是我清理了C盘,腾出足够的空间:
在这里插入图片描述
然后再次运行main.py。然后这次成功了。
在这里插入图片描述

每次运行C盘空间会减少的问题

之后回去再看C盘的空间,发现少了1个G左右:
在这里插入图片描述
然后我开始找C盘新增的比较大的文件。
我原以为是数据集重新下载了,结果发现项目文件的大小远远小于1G,所以并不是这里问题。
之后找呀找(找呀找呀找朋友),结果发现了hiberfil.sys有3.14G,最后额修改时间恰好是我运行main.py的时间(我天真的以为成了),看后缀是个系统文件。
百度之后发现hiberfil.sys是系统休眠的缓存文件,如果要删除的话,以管理员身份运行cmd,输入powercfg -h off来关闭这个功能。
在这里插入图片描述在这里插入图片描述
发现C盘空间回复了:
在这里插入图片描述
然后我满怀信心地再次运行main.py,结果发现C盘又少了1个G!没错又少了1个G!!!!这时候再看C盘,已经没有powercfg -h off

之后我又开始了无比漫长的寻找,想弄清这1G跑到什么地方去了。

每次运行程序后C盘空间减少的原因

减少的内存是保存的网络参数
由于命名规则的原因,在参数文件的名称中会带有accuracy。导致每次运行得到的参数文件不会被替换。所以每次运行C盘空间都会减少。

我的参数保存的路径是:

C:\Users\73416\checkpoints

参数文件名称如下:
在这里插入图片描述
想要释放空间,删掉不用的参数文件就好了。

精简版工程部署到本地的步骤

项目文件下载

进入网址之后会点击clone or download,再点击download ZIP,下载得到一个压缩包,然后解压得到文件夹Hyperspectral-Classification-master

PyCharm中新建项目

打开PyCharm,在PyCharm的项目路径PycharmProjects单独新建了一个project,选择的是已有的环境。
在这里插入图片描述

下载的项目文件转移到PyCharm的项目文件

然后将下载解压后的文件夹Hyperspectral-Classification-master内的所有文件移动到location的路径中,我这里是C:\Users\73416\PycharmProjects\HSIproject
在这里插入图片描述

安装项目需要的相应版本的函数库

项目对于几个第三方函数库的版本有要求,存放于一个.txt文件requirements.txt中。
在这里插入图片描述
之后在PyCharm中打开main.pyPyCharm会自动提醒你不满足requirements.txt的要求的函数库有哪几个。

下面使用Anaconda内置的pip来下载满足条件的函数库:

首先要找到Anaconda的Scripts文件夹的路径,我的路径是E:\Anaconda\Scripts,这个取决于Anaconda的安装路径。
之后打开命令行,输入cd 文件路径,我这里是cd E:\Anaconda\Scripts
在这里插入图片描述
再输入文件所在的磁盘,我这里是E:,得到下面这个界面。
在这里插入图片描述
之后再输入pip的安装命令,pip install 函数库名,安装成功得到下面的界面。
在这里插入图片描述
要检验所下载的函数库是不是位于conda的环境下。先打开Anaconda prompt。
在这里插入图片描述
然后输入conda list,查看conda环境下的函数库。
在这里插入图片描述
可以看到conda的环境下已经有了torchsummary这个函数库。
另外从PyCharm也可以看到。
在这里插入图片描述
做完这些之后,再看main.py就不存在缺少函数库的报错了。
在这里插入图片描述

开启visdom

之后按照GitHub的步骤,使用visdom。
首先打开命令行窗口,然后输入python -m visdom.server
在这里插入图片描述
然后访问网址http://localhost:8097。得到这个界面。
在这里插入图片描述

运行main.py文件

解决No module named 'torch'的报错

首先查看torch的路径。
在PyCharm界面输入代码torch,会返回torch所在的位置。在这里插入图片描述
可以看到我这里torch的路径是E:\\Anaconda\\lib\\site-packages\\,然后main.pyimport _future_之后,import XXX之前插入如下的代码:

import sys,os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
sys.path.append('E:\\Anaconda\\lib\\site-packages\\')

(最后一行sys.path.append('E:\\Anaconda\\lib\\site-packages\\')的路径是torch的路径,因人而异!!):

代码的插入位置如下:
在这里插入图片描述

运行main.py之前要先在命令行打开visdom

如题。

解决数据集文件夹的找不到路径的报错

在项目文件夹下(我这里是C:\\Users\\73416\\PycharmProjects\\HSIproject\\)创建一个空的文件夹,命名为Datasets
然后再PyCharm中打开datasets.py,修改其中的代码。
再下图所示的位置,加入我选中的那一行的代码target_folder = "C:\\Users\\73416\\PycharmProjects\\HSIproject\\Datasets\\",用来修改默认的搜索路径。
(注意:路径是文件夹Datasets的子文件夹的路径,因人而异!! 即使现在文件夹Datasets并没有子文件)。
在这里插入图片描述

完成部署之后,运行的步骤

首先打开命令行窗口,然后输入python -m visdom.server
在这里插入图片描述
然后访问网址http://localhost:8097。得到这个界面。
在这里插入图片描述

然后确保C盘有足够的空间!!!

然后打开命令行,输入python C:\Users\73416\PycharmProjects\HSIproject\main.py --model nn --dataset PaviaU --training_sample 0.1 --cuda 0运行main.py,并指明相应的参数。

然后等待结果就可以了。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值