问题描述
今天在环境迁移的过程中遇到多个问题,包括ModuleNotFoundError: No module named 'flask',socket.gaierror: [Errno -3] Temporary failure in name resolution以及Downloading: "https://huggingface.co/gyrojeff/YuzuMarker.FontDetection/resolve/main/commit%3Dbc0f7fc-epoch%3D26-step%3D261954.ckpt" to /home/visionx/.cache/torch/hub/checkpoints/commit%3Dbc0f7fc-epoch%3D26-step%3D261954.ckpt
Traceback (most recent call last):
File "/home/visionx/EXT-3/qfy/anaconda3/envs/fontdetect/lib/python3.8/urllib/request.py", line 1317, in do_open,正好在这里详细分析并记录一下。
原因分析及解决办法
先说第一个问题,缺少flask模块对吧,所以直接安装就可以了
pip install flask
但由于我的属于离线环境,所以报错了
那就需要离线安装。
离线安装需要把flask依赖的库全安上最后才能安装flask,顺序为Werkzeug、MarkupSafe、pytz、Babel、Jinja2、itsdangerous、Click、Flask。也可以随便装,反正装不下去了也会提示先装哪个。把上面的包从PyPI · The Python Package Index官网下载好之后,然后执行解压安装操作即可,注意最好不要下载最新版本的,以免有坑。以flask包为例:
#tar -xzvf Flask-1.1.1.tar.gz#cd Flask-1.1.1/#sudo python3.6 setup.py install
其他几个包都是一样的操作。
当然这里也有另外一个办法,就是在主机上把环境在conda pack一遍,然后再传给服务器,这个方法是更省事的,推荐!
conda pack -n fontdetect -o fontdetect.tar.gz
第二个问题socket.gaierror: [Errno -3] Temporary failure in name resolution,这个是因为localhost.localdomain无法解析造成的,所以处理这个问题不仅要修改host文件还要修改DNS的配置文件。
首先是修改/etc/hosts,添加如下行解决
vim /etc/hosts (添加如下行解决)127.0.0.1 localhost.localdomain localhost
然后修改DNS的配置文件,这个时候只需要添加以下两行即可,因为第一行的nameserver是服务器自带的
vim /etc/resolv.conf'添加了两行(DNS地址是咨询了服务器运营商得知的)'
nameserver 127.0.0.53
(添加下面这两行)
nameserver 61.129.88.123
nameserver 114.114.114.114
添加完这些之后,问题也就解决了。
但是新的问题又出现了,也就是第三个问题。
乍一看好像还是那个问题,但会发现上面已经开始Downloading了,这就有意思了对吧,那这个明显是权重因为不联网的原因没有下载成功啊,那只需要把权重考过去就行了
scp -r /home/visionx/.cache/torch/hub/checkpoints/* 用户名@ip:/home/visionx/.cache/torch/hub/checkpoints
原谅我比较懒,担心后续会出现其他问题,所以就全部考过来了,当然这是一个非常懒省事但是不合格的工程思想,希望大家不要像我学习。
完结撒花
其实写到这,我好像恍然大悟一个事情,就是我第一次出现socket.gaierror: [Errno -3] Temporary failure in name resolution的时候也是有Downloading *** 的,也就是说如果我一开始就把权重导过去可能就解决了,这是一个非常扯蛋的事情,抱歉,各位,到这才跟你们说,因为我也是写到上一段的时候我才发现这个问题的,所以看在我辛苦敲字的面儿上放我一马吧。因为直到现在我也不知道是不是一开始就传权重就能把问题解决,但可以保证的是按照上面说的,肯定是可以解决的额。