视觉学习笔记1——配置深度学习环境(安装Ubuntu18,NVIDIA驱动,cuda10.1,cudnn,pycharm,OpenCV4,anaconda3,TensorFlow,pytorch)

硬件:联想拯救者y7000

安装Ubuntu18.04

安装Ubuntu首先你要想好是这个Ubuntu你要放在哪里,常见的有3个方法:
1、放在VMware虚拟机里
2、弄成双系统
3、放在大容量硬盘或者U盘上挂载

考虑到自己是用在深度学习上,虚拟机和移动硬盘挂载可能不是特别适合我(原因可以自己去百度)所以我决定使用双系统方案。
那为什么要用18版不用20版的Ubuntu呢,因为18的时间比20长你遇到的坑别人绝大多数都踩过,网上可供参考的资料会更多,懂的都懂

安装准备

1、 Ubuntu系统镜像链接
2、 USB刻录软件Rufus
3、4G左右的U盘

烧录镜像与分配空间

其实这个烧录也没什么好说的你可以用Rufus,也可以用软碟通,只要把镜像ISO文件录进去就行了,这里就不过多解释,详细操作自己试一次就知道了。
烧录

首先不要急着去重启安装,要分配好所需要的磁盘空间,在桌面的“计算机”上右键,选择“管理”,进入如下窗口,点击“磁盘管理”(这图不是我的,因为我在Ubuntu里面写,所以没有专门去截图)。
在这里插入图片描述

我建议为Ubuntu分配50G到100G左右的空间(看你有多大的盘),选中一个盘(别选C盘,信我),我的是D盘分配了200G。选中D 盘,按鼠标右键,选择“压缩卷”,在新弹出的窗口上输入200000M就OK了。做完这些准备工作就可以正式安装了。

安装Ubuntu

第一步连接电源,插入U盘,关机重启,在电脑进入logo阶段时,快速长按bios键进入boot界面,注意是boot界面不是BIOS界面(我的电脑是拯救者,进入boot界面的BIOS键是F12)。bios设置u盘启动,这个网上依据不同机型教程各不相同,我就不说了自己查。
第二步在boot界面里有一个UEFI的U盘启动入口(如果你的不是UEFI或者没有的,可以去参考一下这篇博客),键盘控制进去,可以看见一个类似下图的的界面。
在这里插入图片描述
用键盘控制,选择 Install Ubuntu 回车进入安装。(我看见有的人会在回车后卡住,可是我没有遇到这种情况,不过我把别人的方法贴出来,注意不要急着去安装驱动)
第三步这里就要注意了,一些选项不要选错了:

选择 Install Ubuntu
在这里插入图片描述

选择中文汉语(选别的就自己看着办)
在这里插入图片描述

先不要连WiFi,不然在安装时会同时下载别的东西会很慢,跳过
在这里插入图片描述

这个选择第一个,第二个都行,区别是第一个会多配上一些工作软件,安装时间会长一点;第二个就比较空白(第三个就别选了,很多人都不建议所以我没试过,如果你试过可以去评论区告诉我)
在这里插入图片描述

必选其他选项,很重要,你的启动盘、系统盘和用户盘等都是在这里做的,然后继续
在这里插入图片描述
点击其它选项后继续,会弹出这个界面
在这里插入图片描述
选择空闲设备,这个空闲设备容量大约是200000M,它就是我们前面所压缩出来的200G硬盘。把这个硬盘分成4个(分多少个,每个分多少,看个人,别乱分就行),如下表:

名称分区格式大小
/boot逻辑分区Ext4500M
/主分区Ext450G
swap逻辑分区swap8G
/home逻辑分区Ext4剩余

我们选择空闲设备,然后点击下面的+号进行分区,在创建分区界面进行配置。
最后分区结束后,不要急着下一步安装,先点击+号下面一行的“安装启动引导器设备”选项,选择你之前分了500M左右的那个/boot设备。

右下角继续安装将改动写入磁盘,继续配置时间地图、账号和密码,然后就开始安装等待了。

安装网卡和NVIDIA驱动

安装准备

1、更换清华源
清华源地址
打开终端

将系统自带的该文件做个备份:
 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
 
 备份后输入命令更换文件里面的内容:
 sudo gedit /etc/apt/sources.list
 
 sudo apt-get update 更新源
sudo apt-get upgrade 更新软件

有线网络无法连接,安装gcc和make安装驱动 ,先跳过这一步,离线安装显卡驱动,安装后会有网卡驱动的。

无线网络无法连接,估计是驱动不匹配,比如我的型号是Intel® Wi-Fi 6E AX211 160MHz,参考这篇博客安装新驱动

2、下载驱动
驱动安装有3种方法,大概可以看这个博客介绍,不过我推荐用下载驱动进行安装这个方法,这样你就可以自由安置你的驱动文件
Nvidia中文官网选填对应信息,下载好对应驱动编译,注意自己电脑对应配置,选择对应的驱动(建议不要选择过高版本的驱动)选填对应信息
1)打开终端,先删除旧的驱动:

sudo apt-get purge nvidia*

2)禁用自带的 nouveau nvidia驱动

创建一个文件通过命令 sudo vim /etc/modprobe.d/blacklist-nouveau.conf

并添加如下内容:

blacklist nouveau
options nouveau modeset=0

再更新一下

sudo update-initramfs -u

修改后需要重启系统。确认下Nouveau是已经被你干掉,使用命令:

lsmod | grep nouveau

3)重启系统至init 3(文本模式),也可先进入图形桌面再运行init 3进入文本模式,再安装下载的驱动就没问题

首先我们需要结束x-window的服务,否则驱动将无法正常安装

关闭X-Window,很简单:

sudo service lightdm stop

然后切换tty1控制台:Ctrl+Alt+F1即可(切换不出来可以把F1换成F2,F3,tty1,tty2,tty3感觉都一样)

正式安装

接下来就是最关键的一步了:

sudo chmod NVIDIA*.run
sudo ./NVIDIA-Linux-x86_64-***.**.run –no-x-check -no-nouveau-check -no-opengl-files

–no-opengl-files:表示只安装驱动文件,不安装OpenGL文件。这个参数不可省略,否则会导致登陆界面死循环,英语一般称为”login loop”或者”stuck in login”。
–no-x-check:表示安装驱动时不检查X服务,非必需。
–no-nouveau-check:表示安装驱动时不检查nouveau,非必需。
-Z, --disable-nouveau:禁用nouveau。此参数非必需,因为之前已经手动禁用了nouveau。
-A:查看更多高级选项。

安装过程中一些选项

The distribution-provided pre-install script failed! Are you sure you
want to continue?

选择 yes 继续。

Would you like to register the kernel module souces with DKMS? This
will allow DKMS to automatically build a new module, if you install a
different kernel later?

选择 No 继续。

问题大概是:

Nvidia’s 32-bit compatibility libraries?

选择 No 继续。

Would you like to run the nvidia-xconfigutility to automatically
update your x configuration so that the NVIDIA x driver will be used
when you restart x? Any pre-existing x confile will be backed up.

选择Yes 继续
(这个sudo ./NVIDIA-Linux-x86_64-*****.run –no-x-check -no-nouveau-check -no-opengl-files是对应你的文件路径下的驱动文件)安装过程比较快,要多注意提示,选择和error字眼,如果安装失败了,那么根据它给出的失败提示进行百度查询即可,失败原因可能是环境没配好,类型比较花式,这里就不一一列举。

最后安装完毕后,重新启动X-Window:

sudo service lightdm start

然后Ctrl+Alt+F7进入图形界面;

最后测试一下是否安装成功

nvidia-smi

nvidia-settings

成功图例如下
在这里插入图片描述
如果提示错误nvidia-smi has failed because it couldn‘t communicate with the nvidia driver,可以参考这篇博客解决

安装cuda10.1,cudnn7.6

**首先说明一下以下可以自定义安装位置的尽量自定义,这样可以有效控制管理自己的电脑,不要搞得乱七八糟。 **
2022年9月14日,更新多cuda教程

安装cuda

cuda10.1是cuda目前的主流版本,而cudnn7.6是cuda10.1对应版本。在cuda官网选择系统对应的版本下载CUDA10.1.

  1. 进入终端执行官网提示的命令(run和deb版都行,我用的是run)
    在这里插入图片描述
  2. 进入终端可视化安装界面,要注意的是因为电脑已经搭载好驱动,所以不要勾选Driver,那么只需要移动到Driver,按enter键,将"[]"中的X去掉即是不选择.然后在Install安装。

在这里插入图片描述

  1. 出现以下画面表示coda10.1安装成功

在这里插入图片描述

  1. 安装完成后还要对CUDA相关配置进行修改,将CUDA的编译器添加到环境变量中。
    打开终端输入命令:
 sudo gedit  ~/.bashrc

在最下面添加:

export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH

使配置文件生效:

source ~/.bashrc
  1. 测试版本号是否对应 ,判断cuda是否安装成功,执行:
 nvcc --version

可以打印显卡信息查看:

nvidia-smi

安装cudnn

官方下载cudnn,选择匹配CUDA10.1版本的cudnn下载
在这里插入图片描述
直接解压cudnn,进入对应的文件路径,把文件拷贝到cuda相应的文件夹下即可:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/*.* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

查看cudnn版本

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

安装pycharm

有很多人会吐槽pycharm怎样怎样,推荐用别的文本编辑器比如sublime text3、VS code,Jupyter NoteBook等,甚至会叫你直接用记事本写。但是我推荐用pycharm的原因是集成度高,新手必备工具。

下载安装

官方地址

下载社区版(专业版可以自己找找激活码)平时就够用了
pycharm更新很快,推荐下载前几个月的版本(从其他版本进去)
在这里插入图片描述

下载好软件包并找好地方进行解压,解压后可直接运行,无需安装。
这时会有一个问题
平时启动软件需要在终端输入:

(对应安装路径和安装包名称需改动)
sh pycharm/pycharm-2020.3.3/bin/pycharm.sh

它没有生成快捷方式,想要生成快捷方式需要在/usr/share/applications创建一个文件:pycharm.desktop

cd /usr/share/applications
sudo gedit /usr/share/applications/pycharm.desktop

在这个文件里添加以下内容

[Desktop Entry]
Version=1.0
Type=Application
Name=Pycharm
Icon="/home/python/Program File/pycharm-2020.1.1/bin/pycharm.png"
Exec=sh "/home/python/Program File/pycharm-2020.1.1/bin/pycharm.sh"
MimeType=application/x-py;
Name[en_US]=pycharm
(注意!这里Icon和Exec的你对应路径和文件名,可以从该文件的属性里查看)

最后通过系统应用程序搜索pycharm,找到并打开软件,此时桌面左侧会有快捷方式出现,然后右键锁定到桌面左侧。

安装OpenCV4

OpenCV是什么我就不说了,在安装OpenCV时我是相当痛苦的,因为CV对接的是本机的Python3,可是调用anaconda3建立的Python虚拟环境才是我们的理想配置。那如何让anaconda3也能调用OpenCV呢?经过多次测试最好是一开始就先装opencv,这样系统自动用系统自带python进行编译,等生成了cv2.so再安装anaconda。

安装依赖

搭建OpenCV需要安装依赖,否则容易失败:

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev libgtk2.0-dev pkg-config
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install ffmpeg
sudo apt-get install libgtk-3-dev

下载源码

  1. 进入官网,老规矩下载最新版的上一个版本,比如4.4Sources版本
    在这里插入图片描述
  2. 再去GitHub上下载opencv_contrib源码两者的版本要一致
    在这里插入图片描述
  3. 最后将contrib压缩包解压后放进之前解压好的Opencv Sources的文件夹下

在这里提前打个补丁,因为在后面编译OpenCV 以及 openc_contrib 时很容易出现提示:缺少boostdesc_bgm.i文件出错。可能是因为墙的问题,有一些文件下载不全

总共缺了以下几个文件:
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i

所以需要手动打补丁。

这里感谢这位博主贡献的资源,自行下载:https://blog.csdn.net/AlexWang30/article/details/99612188

下载解压到对应的opencv_contrib/modules/xfeatures2d/src/目录下

下载cmake-gui

官网下载cmake(我用的是3.14,直接终端下载的话版本很低,且听说会有点问题),解压后打开cmake-gui。
在这里插入图片描述
进入cmake-gui后,需要进行参数配置,可以参考这篇博客的

2.cmake 配置
https://blog.csdn.net/qq_36275734/article/details/81158966

一定要注意在配置中下面对应的路径指向

Python 3:
    Interpreter:                 
    Libraries:                   
    numpy:                       
    packages path:  

每次Configure 时都要注意下方区域有没有标红的和error字眼,如果有请自行百度,因为cmake的问题各种各样的,很奇葩。
配置完成后,点击Generate,会在build文件夹中生成一系列文件.

终端编译opencv

重头戏来了

  1. 终端进入到build文件目录下
  2. 编译,可以使用多线程编译来加快编译速度(比如 make -j6之类的)但是这里每个人的配置都不一样,根据cpu性能选择多线程编译数,不要占满自己CPU,用一半就行了(编译需要好一会时间)
sudo make
  1. 经过漫长的等待,终于编译成功了(失败了怎么办?检查编译失败的错误消息,在确保cmake-gui没问题下,可能是有一些依赖没安装好,并且我会在评论区记录一些遇到过的问题以及解决方法),安装:
sudo make install 

4.验证opencv安装:

pkg-config opencv4 --libs                   (查看opencv的lib库)
pkg-config opencv4 --modversion             (查看opencv的安装版本) 

安装anaconda

Anaconda是python开发环境特好用的一个工具,可以让你建立不同的python虚拟环境不受外界干扰,在同一机器上不同python工程提供了方便。也是一个出色的集成开发工具集,包括了Python解释器、conda包管理器、以及众多集成好的数学科学库(numpy/pandas/matplotlib/scipy/sk-learn 等等)因此非常适合于对 python 有数据处理需求的工程师与学生使用,可以减少因包依赖导致的库下载失败而浪费时间。

下载安装

国内用户可以从清华大学开源软件镜像站里面获取 Anaconda 3
根据自己的基础配置选择对应的 Linux 86_64 位版本下载。
在这里插入图片描述

下载好后,终端进入安装包所在的对应目录,执行:

bash Anaconda3-***-Linux-x86_64.sh

然后就开始一直按回车,直到最后许可信息显示完出现下面提示,回复yes
在这里插入图片描述
之后就提示你要将Anaconda安装在目录/home/xxx/anaconda3下面:(建议使用此目录)直接按回车键表示使用默认目录,进行安装过程了。
在这里插入图片描述
在这里插入图片描述

等待安装完之后,会询问是否把anaconda的bin添加到用户的环境变量中
输入yes
在这里插入图片描述
检查是否安装
打开一个新的终端,输入

python
或
conda --version

安装成功后你就可以开始创建管理自己的虚拟环境了。
在这里插入图片描述

OpenCV与anaconda调用问题

接回OpenCV安装前谈到的问题:如何让anaconda3也能调用OpenCV?
其实使用系统自带的python2和python3编译分别会生成对应Python版本的cv2.so和cv2.cpython-35m-x86_64-linux-gnu.so(一般现在都是Python3)这就是我们分别在anaconda2和anaconda3中import的cv2模块。

因为我的是anaconda3,所以首先进入到~/opencv-4.4.0/my_build_dir/lib/python3目录下将其中的cv2.cpython-35m-x86_64-linux-gnu.so复制到anaconda下。(如果是anaconda2就直接将cv2.so复制进去就可以了)

(一定要找对位置)
sudo cp cv2.cpython-35m-x86_64-linux-gnu.so /home/zya/anaconda3/lib/python3.6/site-packages/

然后改名:

sudo mv cv2.cpython-35m-x86_64-linux-gnu.so cv2.so

当然你不愿意复制也可以使用建立软链接的方式(不太推荐,个人觉得没复制的方便)

ln -s /usr/local/lib/python3.6/site-packages/cv2.cpython-36m-x86_64-linux-gnu.so /anaconda3/lib/python3.6/site-packages/cv2.so

然后问题完美解决了!

安装TensorFlow-GPU

版本对应

Anaconda中安装TensorFlow的时候发现:Anaconda自动安装TensorFlow的时候会配置你安装版本对应的CUDA和cuDNN,而我们的是反过来的,我觉得问题不大。TF与cuda、cudnn的版本对应如下:
在这里插入图片描述

创建与安装

1.创建虚拟环境:
我们在anaconda3中创建虚拟环境来调用TF,这样就不会影响电脑本身的环境。

创建tf虚拟环境
conda create -n tf python=3.6(tf为自定义命名)
激活环境
source activate tf
退出虚拟环境。
conda deactivate
安装TensorFlow-gpu2.1.0,两方法(这个2.1.0可以自己修改为自己想要的)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==2.1.0
或
conda install tensorflow-gpu=2.1.0

有时只修改镜像源是不够的,依旧会爆出HTTP超时,需要设置超时时间,还有就是pip和conda的都改一下,有时候用conda有时候用pip的。

国内常用镜像源,自由替换:

阿里:https://mirrors.aliyun.com/pypi/simple/
百度:https://mirror.baidu.com/pypi/simple/
清华:https://pypi.tuna.tsinghua.edu.cn/simple/
豆瓣:http://pypi.douban.com/simple/

中科大: https://pypi.mirrors.ustc.edu.cn/simple/
山东理工大学:https://pypi.hustunique.com/

安装好后进行测试
终端进入虚拟环境,然后输入

python

输入

>>> import tensorflow as tf
>>> print(tf.__version__)
2.1.0

这样子就成功了

安装pytorch-GPU

版本对应

pytorch与cuda、cudnn的版本对应如下:
在这里插入图片描述

创建与安装

1.创建虚拟环境:

创建tf虚拟环境
conda create -n torch python=3.6(tf为自定义命名)
激活环境
source activate torch
退出虚拟环境。
conda deactivate

2.安装

pip install torch==1.6.0 torchvision==0.7.0 -f http://download.pytorch.org/whl/torch_stable.html

可能是因为国外的原因,下的比较慢,嫌弃的话可以到清华镜像下载对应版本的pytorch包没试过 ,表示很好用,建议用这个)

到下载好的目录下安装:

cd 压缩包所在文件夹
conda install --offline pytorch-1.6.0-py3.6_cuda10.1.243_cudnn7.6.3_0.tar.bz2
 conda install --offline torchvision-0.7.0-py36_cu101.tar.bz2

结语

  1. 自此,环境搭建基本结束了,如果有不对的地方请评论区留言,有问题我尽量回答
  2. 这个笔记原意是我自己的学习记录,不保证所有操作都是正确的(毕竟网络变得太快了,有的方法可能过时或者失效了)
  3. 由于我太懒了,这个笔记大概拖了大半年的更,只是师弟在催更,才想起没写完(哭)。
  4. 给个3连吧!!!

多CUDA安装

2022年9月14日,更新多cuda教程

公司服务器被多人使用导致需求不同的cuda版本,一直没找到一个完全完整靠谱的教程,这是我参考几个博客完成测试的全过程记录,方便以后操作,无任何商业用途,如有侵权,请联系删除。
CUDA历史下载
CUDNN历史下载

之前已经安装了一个cuda10.1,现在安装cuda10.2及其cudnn8.0.5

根据官网命令执行
在这里插入图片描述

这个选项表达已经有cuda存在于/usr/local/cuda,是否更新此安装?
选yes没问题。
在这里插入图片描述
至此之后安装成功,不专门截图。。。

执行命令,查看是否有新的cuda

ls -l /usr/local | grep cuda

在这里插入图片描述

安装cudnn,选第一个
在这里插入图片描述

下载解压后,进入该文件夹
在这里插入图片描述
执行以下命令,请根据自己下载的cuda版本号以及观察 /usr/local下的文件对命令进行修改

sudo cp cuda/include/cudnn* /usr/local/cuda-10.2/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.2/lib64
sudo chmod a+r /usr/local/cuda-10.2/include/cudnn.h /usr/local/cuda-10.2/lib64/libcudnn*

同时建议把之前的cuda与cudnn文件也整理一下,到时候就可以直接整体进行软链接,命令与上面的一样格式.

终端执行sudo gedit ~/.bashrc,打开环境变量配置文本。将里面所有与cuda有关的带版本号路径都改为无版本号的。比如我之前已经安装好了cuda10.1,然后当时配置环境变量时,有许多/usr/local/cuda-10.1/这样的路径,要做的就是把所有的-10.1都去掉。修改好之后,保存并关闭文件,然后在终端执行命令source ~/.bashrc使环境变量的修改生效。

切换不同的cuda执行以下命令

# 删除目前的软链接
sudo rm -rf /usr/local/cuda  
# 生成新的软链接
sudo ln -s /usr/local/cuda-10.2 /usr/local/cuda 
# 查看当前cuda的版本,或者用nvcc --version
cat /usr/local/cuda/version.txt
#查看cudnn版本
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

至此结束

  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
安装配置Anaconda3PyCharmCUDA 10.1cuDNN 7.6和TensorFlow 2.2的步骤如下: 1. 首先,下载并安装Anaconda3。访问Anaconda官方网站,并下载适合您操作系统的安装程序。运行安装程序,按照提示进行安装。 2. 安装完成后,打开终端或命令提示符,并创建一个新的Anaconda环境。运行以下命令: ``` conda create -n env_name python=3.7 ``` 将"env_name"替换为您想要的环境名称。 3. 激活新创建的环境。运行以下命令: ``` conda activate env_name ``` 4. 下载并安装PyCharm。访问JetBrains官方网站,下载适合您操作系统的PyCharm安装程序。运行安装程序,按照提示进行安装。 5. 下载并安装CUDA 10.1。访问NVIDIA官方网站,下载与您的显卡和操作系统兼容的CUDA 10.1安装程序。运行安装程序,按照提示进行安装。 6. 下载并安装cuDNN 7.6。访问NVIDIA官方网站,并下载与您的CUDA版本和操作系统兼容的cuDNN 7.6库。将cuDNN文件解压缩到CUDA安装目录中。 7. 配置PyCharm以使用Anaconda环境。打开PyCharm并导航到"Settings" > "Project Interpreter"。单击右上角的设置图标,并选择"Add"。在打开的窗口中,选择"Conda Environment" > "Existing environment"。在"Interpreter"字段中,选择Anaconda环境的路径。 8. 在PyCharm安装TensorFlow 2.2。返回"Settings" > "Project Interpreter",并单击右下角的"+"按钮。在搜索栏中输入"tensorflow",并选择TensorFlow包。单击"Install"按钮,完成安装。 9. 现在,您已成功安装配置Anaconda3PyCharmCUDA 10.1cuDNN 7.6和TensorFlow 2.2。您可以开始使用TensorFlow进行深度学习任务。 请注意,安装配置步骤可能因操作系统和版本而异。建议在查找和安装这些软件时参考官方文档和教程。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值