亲测有效!Win10环境下RAGFlow全栈配置教程(附避坑指南)

背景

最近想改下ragflow的源码和研究下大模型。好好的整理下环境。
ragflow想说爱你不容易,win10环境搭建、常用修改

以前写过python,项目不大,也就几个项目,一般都用python自带的venv做环境管理,单一的python还好一些,我之前安装的是3.9(比较早了)。而有些项目需要3.10,有的需要3.11,有的需要3.12,要么升级,要么安装多套环境。有时候一不注意好几个项目就混合共用一个虚拟环境,然后就是各种版本冲突。

后来安装了anaconda,个人感觉还是有点重了,趁着这次跑微调以及ragflow源码的修改。使用minicoda重新整理了一遍。

我让chatgpt帮我对比了下优缺点。

特性venv + pipconda
Python 版本管理❌ 依赖系统 Python✅ 独立管理多个版本
非 Python 依赖❌ 仅支持 Python 依赖✅ 支持 C/C++、CUDA 等
依赖解析能力⚠️ 可能冲突✅ 更强的依赖管理
速度✅ 轻量级⚠️ 可能较慢(特别是 solver)
YAML 配置支持❌ 不支持✅ 支持 environment.yml
速度慢,在于解析查找,安装完以后都一样。

本文篇幅交行,我简单的列下本文大纲。

  • pip 环境
  • minconda3安装
  • conda常用操作
  • ragflow win10环境配置
  • ragflow后端启动
  • ragflow前端启动
  • ragflow登录界面和图标修改

环境清理

pip推荐

全局设置

只要我们设置一次,以后就一直生效。选择一个设置即可。

#阿里pip镜像
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple

#清华pip镜像
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

#腾讯pip镜像
pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple

#豆瓣pip镜像
pip config set global.index-url http://pypi.douban.com/simple/

#网易pip镜像
pip config set global.index-url https://mirrors.163.com/pypi/simple/

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
Writing to C:\Users\yxkong\AppData\Roaming\pip\pip.ini

临时使用

不想设置全局,可以在安装的时候,临时设置一个。

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/

使用pip的时候在后面加上-i参数,指定pip源:

miniconda3安装

官方网址:
https://docs.conda.io/projects/conda/en/stable/index.html

国内镜像
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/

unbuntu 22 安装

unbuntu中,下载以后,直接执行下面的命令即可。

sh Miniconda3-latest-Linux-x86_64.sh 

按照提示,回车-> yes->数据安装目录(可选),不输入直接回车->yes

Welcome to Miniconda3 py312_25.1.1-2

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>>  
ANACONDA TERMS OF SERVICE

Do you accept the license terms? [yes|no]
>>> yes

Miniconda3 will now be installed into this location:
/home/yxkong/miniconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/home/yxkong/miniconda3] >>> /opt/app/miniconda3
PREFIX=/opt/app/miniconda3

You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>> yes
no change     /opt/app/miniconda3/condabin/conda
no change     /opt/app/miniconda3/bin/conda
no change     /opt/app/miniconda3/bin/conda-env
no change     /opt/app/miniconda3/bin/activate
no change     /opt/app/miniconda3/bin/deactivate
no change     /opt/app/miniconda3/etc/profile.d/conda.sh
no change     /opt/app/miniconda3/etc/fish/conf.d/conda.fish
no change     /opt/app/miniconda3/shell/condabin/Conda.psm1
no change     /opt/app/miniconda3/shell/condabin/conda-hook.ps1
no change     /opt/app/miniconda3/lib/python3.12/site-packages/xontrib/conda.xsh
no change     /opt/app/miniconda3/etc/profile.d/conda.csh
modified      /home/yxkong/.bashrc

==> For changes to take effect, close and re-open your current shell. <==

Thank you for installing Miniconda3!

可以看到最后有一个 /home/yxkong/.bashrc

验证下

(base) yxk@yxkong:~$ conda -V
conda 25.1.1

win10 安装


设置安装目录

  • 将Miniconda3添加到环境变量里,官方不推荐,我推荐勾选
  • 注册Miniconda3作为默认的python3.12,如果本地已经有python环境,不用勾选,没有勾选上
  • 安装完清理

安装以后,我们可以在命令行中执行Get-Command python

PS C:\Users\yxkong> Get-Command python

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     python.exe                                         3.12.91... E:\ai\miniconda3\python.exe

conda常用操作

conda配置操作

conda安装以后,我们先设置一下,设置显示通道地址

#设置显示通道地址
conda config --set show_channel_urls yes
#查看通道channels
conda config --show channels
channels:
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  • 设置完以后在对应的登录用户目录下,会有一个.condarc文件,不管是unbuntu还是win10,
  • 还有一个.condarc,在程序的安装目录中,
  • 通过命令操作修改的是当前用户目录中的.condarc文件
  • 在操作的时候,是把这两个文件进行了合并。

其他配置操作

#获取版本号
conda --version 或 conda -V

#检查更新当前conda
conda update conda

#禁止conda自动更新
conda config --set auto_update_conda False

#禁止自动激活base环境,需要每次手动激活
conda config --set auto_activate_base false

环境操作

常用操作

# 激活环境
conda activate ragflow

# 退出当前环境
conda deactivate

#查看环境列表
conda env list

#查看当前存在哪些虚拟环境
conda env list 或 conda info -e

#删除指定环境
conda env remove -n 环境名称

创建环境


#创建一个ragflow 的环境,包括 python 3.11  pip
conda create -n ragflow python=3.11 pip

# 从现有的环境复制一个到新的环境
conda create --clone old_env -n new_env

# 激活环境
conda activate ragflow

包管理

# 查看指定环境的包列表,
conda list package_name

# 查询当前包环境
conda list

#安装包,可以通过=设置版本号
conda install package_name
#比如
conda install numpy=1.18.5


conda install -c channel_name package_name


#根据requirements.txt安装环境
conda install --file requirements.txt

#从当前激活的 conda 环境中导出包列表到 requirements.txt 文件
conda list --export > requirements.txt

# 查询包
conda search package_name

#更新包
conda update package_name

# 删除包
conda remove package_name

镜像源设置

添加国内镜像

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/




添加的这些链接是什么含义?接下来我们了解下。

镜像路径解释

清华大学的镜像站还是蛮全的,地址:https://mirrors.tuna.tsinghua.edu.cn/。
这里有很多好经常使用的软件。还有同步时间。

https://mirrors.tuna.tsinghua.edu.cn/anaconda/

目录/文件含义
archive/存储 Anaconda 的历史存档文件,可能包括旧版本的安装包或其他相关文件。
cloud/存储与 Anaconda Cloud 相关的文件,可能包括从 Anaconda Cloud 同步的包或其他资源。
miniconda/存储 Miniconda 的安装文件和相关资源。Miniconda 是 Anaconda 的轻量级版本,只包含 conda、Python 和一些依赖项。
pkgs/存储 Anaconda 的软件包文件。这些文件是 conda 安装和管理包时使用的二进制文件。
failed_packages.txt记录失败的包信息的文件,可能包含在同步或更新过程中出现问题的包的列表。

目录/文件含义
free/存储 Anaconda 的免费软件包。
main/存储 Anaconda 的主要软件包,包括常用的数据科学和计算工具。
mro/存储与 Microsoft R Open 相关的软件包。
msys2/存储与 MSYS2 相关的软件包,MSYS2 是一个用于 Windows 的轻量级 Unix 环境。
pro/存储 Anaconda Pro 的软件包,Anaconda Pro 是 Anaconda 的商业版本。
r/存储与 R 语言相关的软件包。
rss.xml提供该目录的 RSS 订阅文件,方便用户通过 RSS 阅读器获取目录更新信息。
通过上面的说明,我们可以看到每个目录的含义,添加额每个url是什么含义,就有了清晰的了解了。

常用镜像站

清华

北外

https://mirrors.bfsu.edu.cn/anaconda

最后重定向到了清华

中科大

https://mirrors.ustc.edu.cn/anaconda/

conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
conda config --set show_channel_urls yes

我设置的

channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
- https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
- https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
- https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
- https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
- https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
show_channel_urls: true
auto_update_conda: false

ragflow后端环境配置

#下载代码
git clone https://github.com/infiniflow/ragflow

我使用的是0.17.2版本的代码

设置PyCharm环境依赖

点击pycharm 的设置。

  • 找到python interpreter点击2的位置,然后点击3添加本地的python解释器。

python interpreter 中文叫python解释器,可以理解为python环境。

  • 点击1选择conda环境
  • 点击2选择自己安装的miniconda地址中的condabin\conda.bat
  • 点击3加载

  • 点击1使用已存在的环境(我之前创建的ragflow)
  • 选择ragflow

可以看到已经内置了一些包。我们点击ok按钮。

依赖安装

一般我们从别的地方拷贝一个项目安装依赖。有以下几种方式。

  • requirements.txt 直接用项目里提供的requirements.txt 使用pip install -r requirements.txt安装
  • setup.py 在setup.py所在目录里,使用pip install -e .安装
  • Poetry 项目有pyproject.toml文件,直接poetry install
  • Pipenv 项目 有Pipfile文件,使用pipenv install安装

而ragflow都不是,ragflow使用uv管理包。在项目里有个uv.lock文件。

UV(UltraFast Python Package Installer) 是一个 超快速的 Python 包管理工具,用于替代 pipvirtualenv,它的核心特点是 安装速度快依赖解析高效,并且支持 uv.lock 作为锁定文件

然而我折腾了一会,安装不上。(事后总结还是用uv省事,基本上包都覆盖住了。)

使用conda

不想折腾太多环境,使用conda。

我找官方的开发,让他给我导了一份requirements.txt 文件一共275行。然后还是各种折腾了几个小时。启动时候各种缺包。

需要注意的是:

  • 官网写着python 3.10,不行,得3.11,别问我为啥,折腾出来的

我把最后的requirements.txt 放入网盘,有需要的大家自己获取。一共433个。

https://pan.quark.cn/s/54ac26aa4bdb

配置文件

在根目录中有一个conf/service_conf.yaml文件这里是依赖的环境配置。
里面的服务我们都可以自己独立部署。我是之前在本地用docker部署了一套ragflow,所以我就不再单独处理了。

需要注意的事:

如果你docker启动的不是base,需要修改ragflow的端口。
如果你没有修改过docker部署的端口,可以直接使用,如果修改了,需要对应的修改。

后端服务启动

根据官方的文档,直接执行docker/entrypoint.sh既可以启动,我打开一看,是linux环境。

刚开始想把它转成win的脚步,后来试了下,还是算了,最后找到了以下两个命令。

$PY rag/svr/task_executor.py
$PY api/ragflow_server.py

直接在ragflow的根目录里,执行。

# 根据自己的环境设置
set PYTHONPATH=E:\ai\code\ragflow

#启动异步任务的
python .\rag\svr\task_executor.py

#启动后端api服务的
python api/ragflow_server.py

不容易,终于折腾好了


直接命令行启动。


你也可以通过PyCharm启动,特别是断点调试。


又是一堆依赖安装,server也启动了。

最后看下环境的大小。


接近4个g了。

我打个包扔到盘里。大家根据自己的需要获取。
https://pan.quark.cn/s/54ac26aa4bdb

https://pan.baidu.com/s/1PF79x-gzWosN_ME5LtSRIw?pwd=q2tu

ragflow前端环境启动

前端服务启动

前端环境需要npm,或者pnpm,我之前一直有对应的环境,我就不折腾了。

首先进入web目录

# 进入ragflow的web目录
(ragflow) PS E:\ai\code\ragflow> cd .\web\

首先修改.umirc.ts中的proxy

比如我把后端的端口改成了9580

proxy: [  
  {  
    context: ['/api', '/v1'],  
    target: 'http://127.0.0.1:9580/',  
    changeOrigin: true,  
    ws: true,  
    logger: console,  
    // pathRewrite: { '^/v1': '/v1' },  
  },  
],

编译运行


# 安装前端依赖
(ragflow) PS E:\ai\code\ragflow\web> npm install

# 启动项目
(ragflow) PS E:\ai\code\ragflow\web> npm run dev

常用修改

登录页面背景替换

  • 替换背景:ragflow/web/src/assets/svg/login-background.svg
  • 去掉免费注册和图标:agflow/web/src/pages/login/right-panel.tsx 中 26~41删除
  • 替换为客户的名称:agflow/web/src/locales/zh.ts 中57行的 title

logo修改

  • agflow/web/src/conf.json 中的RAGFlow 是图标边上的名称
  • agflow/web/public/logo.svg 左上角的logo

注意事项

关于依赖

如果大家自己折腾,建议用uv,直接导入官方提供的,缺有,但是不多。

不想用uv,使用conda,建议让kimi写个脚本,把uv.lock里的包都洗出来,洗成requirements.txt,然后启动的时候,添加几个就行了。

关于python版本

python必须3.11,3.10有些包安装不上,3.12有些包没有。

非固定版本的包安装

#通用安装法,加双引号
pip install "ruamel-yaml>=0.18.6,<=0.19.0"

# PowerShell 特有安装法,需要转义符号
pip install ruamel-yaml`>=0.18.6,`<=0.19.0

win10 中powershell失效的问题解决

在powershell中,通过pip安装以后,通过conda list查看安装的包,总是找不到。

执行conda init powershell命令,会看到会将conda加入到powershell的环境里。

PS C:\Users\yxkong> conda init powershell
no change     E:\ai\miniconda3\Scripts\conda.exe
no change     E:\ai\miniconda3\Scripts\conda-env.exe
no change     E:\ai\miniconda3\Scripts\conda-script.py
no change     E:\ai\miniconda3\Scripts\conda-env-script.py
no change     E:\ai\miniconda3\condabin\conda.bat
no change     E:\ai\miniconda3\Library\bin\conda.bat
no change     E:\ai\miniconda3\condabin\_conda_activate.bat
no change     E:\ai\miniconda3\condabin\rename_tmp.bat
no change     E:\ai\miniconda3\condabin\conda_auto_activate.bat
no change     E:\ai\miniconda3\condabin\conda_hook.bat
no change     E:\ai\miniconda3\Scripts\activate.bat
no change     E:\ai\miniconda3\condabin\activate.bat
no change     E:\ai\miniconda3\condabin\deactivate.bat
modified      E:\ai\miniconda3\Scripts\activate
modified      E:\ai\miniconda3\Scripts\deactivate
modified      E:\ai\miniconda3\etc\profile.d\conda.sh
modified      E:\ai\miniconda3\etc\fish\conf.d\conda.fish
no change     E:\ai\miniconda3\shell\condabin\Conda.psm1
modified      E:\ai\miniconda3\shell\condabin\conda-hook.ps1
no change     E:\ai\miniconda3\Lib\site-packages\xontrib\conda.xsh
modified      E:\ai\miniconda3\etc\profile.d\conda.csh
modified      C:\Users\yxkong\Documents\PowerShell\profile.ps1
modified      C:\Users\yxkong\Documents\WindowsPowerShell\profile.ps1

No module named ‘api’

我用PYTHONPATH把ragflow设为了根目录,但是执行的时候,还是找不到api的模块。

(ragflow) PS E:\ai\code\ragflow> set PYTHONPATH=E:\ai\code\ragflow
(ragflow) PS E:\ai\code\ragflow> python .\rag\svr\task_executor.py
Traceback (most recent call last):
  File "E:\ai\code\ragflow\rag\svr\task_executor.py", line 22, in <module>
    from api.utils.log_utils import initRootLogger, get_project_base_directory
ModuleNotFoundError: No module named 'api'

不用环境的设置方法

# Windows
set PYTHONPATH=E:\ai\code\ragflow

# Linux/macOS
export PYTHONPATH=/path/to/your/project/root

#需要注意的是,以上都是单个窗口的设置,可以全局设置


$env:PYTHONPATH="E:\ai\code\ragflow"

Resource punkt_tab not found.

LookupError:
Resource punkt_tab not found.
Please use the NLTK Downloader to obtain the resource:

Resource wordnet not found
执行以下命令

 python -c "import nltk; nltk.download('punkt_tab')"
 python -c "import nltk; nltk.download('wordnet')" 

关于数据库

我没在代码里看到初始化数据库的地方。

因为我本地用docker启了一套环境,所有的数据库都已经有了。如果你全部自己搭建,就把mysql的数据库导出一份。

相关资料

清华DeepSeek相关资料

https://pan.quark.cn/s/5c1e8f268e02
https://pan.baidu.com/s/13zOEcm1lRk-ZZXukrDgvDw?pwd=22ce

北京大学DeepSeek相关资料

https://pan.quark.cn/s/918266bd423a
https://pan.baidu.com/s/1IjddCW5gsKLAVRtcXEkVIQ?pwd=ech7

零基础使用DeepSeek

https://pan.quark.cn/s/17e07b1d7fd0

https://pan.baidu.com/s/1KitxQy9VdAGfwYI28TrX8A?pwd=vg6g

ollama的docker镜像

https://pan.baidu.com/s/13JhJAwaZlvssCXgPaV_n_A?pwd=gpfq

deepseek和qwq模型(ollama上pull下来的)

https://pan.quark.cn/s/dd3d2d5aefb2

https://pan.baidu.com/s/1FacMQSh9p1wIcKUDBEfjlw?pwd=ks7c

dify相关镜像

https://pan.baidu.com/s/1oa27LL-1B9d1qMnBl8_edg?pwd=1ish

ragflow相关资料和模型

https://pan.baidu.com/s/1bA9ZyQG75ZnBkCCenSEzcA?pwd=u5ei

公众号案例

https://pan.quark.cn/s/18fdf0b1ef2e

https://pan.baidu.com/s/1aCSwXYpUhVdV2mfgZfdOvA?pwd=6xc2

系列文档:

DeepSeek本地部署相关

ollama+deepseek本地部署

局域网或断网环境下安装DeepSeek

vlllm部署deepseek基准测试

DeepSeek个人应用

DeepSeek+本地知识库:真的太香了(修订版)

DeepSeek+本地知识库:真是太香了(企业方案)

deepseek一键生成小红书爆款内容,排版下载全自动!睡后收入不是梦

最轻量级的deepseek应用,支持联网和知识库

当我把公众号作为知识库塞进了智能体后

个人神级知识库DeepSeek+ima 个人学习神器

dify相关

DeepSeek+dify 本地知识库:真的太香了

Deepseek+Dify本地知识库相关问题汇总

dify的sandbox机制,安全隔离限制

DeepSeek+dify 本地知识库:高级应用Agent+工作流

DeepSeek+dify知识库,查询数据库的两种方式(api+直连)

DeepSeek+dify 工作流应用,自然语言查询数据库信息并展示

聊聊dify权限验证的三种方案及实现

dify1.0.0版本升级及新功能预览

ragflow相关

DeepSeek+ragflow构建企业知识库:突然觉的dify不香了(1)

DeepSeek+ragflow构建企业知识库之工作流,突然觉的dify又香了

DeepSeek+ragflow构建企业知识库:高级应用篇,越折腾越觉得ragflow好玩

模型微调相关

模型微调之基础篇:模型微调概念以及微调框架

📢【三连好运 福利拉满】📢

🌟 若本日推送有收获:
👍 点赞 → 小手一抖,bug没有
📌 在看 → 一点扩散,知识璀璨
📥 收藏 → 代码永驻,防止迷路
📤 分享 → 传递战友,功德+999
🔔 关注 → 关注5ycode,追更不迷路,干货永同步

💬 若有槽点想输出:
👉 评论区已铺好红毯,等你来战!
Kafka拉取数据的配置设置主要包括以下几个方面: 1. 消费者组的配置:消费者组是Kafka中用于分组管理消费者的概念,可以通过设置消费者组来实现负载均衡和故障转移。在消费者代码中,需要设置消费者组的ID,以便Kafka可以将多个消费者组织成一个消费者组。 2. 消费者配置:消费者配置包括消费者ID、自动提交偏移量、读取超时时间等参数。消费者ID是用于唯一标识消费者的字符串,自动提交偏移量可以设置消费者是否自动提交读取位置,读取超时时间可以设置消费者等待数据的超时时间。 3. 消费者订阅的主题和分区:在消费者代码中,需要指定消费者订阅的主题和分区,以便Kafka可以将消息发送到正确的消费者。 4. 消费者的消费逻辑:在消费者代码中,需要编写消费逻辑,以处理从Kafka中读取的消息。消费逻辑可以根据业务需求进行自定义,例如将消息写入数据库、发送到其他系统等。 下面是一个使用Java语言编写的Kafka消费者的配置示例: ```java Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("group.id", "test-group"); props.put("enable.auto.commit", "true"); props.put("auto.commit.interval.ms", "1000"); props.put("session.timeout.ms", "30000"); props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); consumer.subscribe(Arrays.asList("test-topic")); while (true) { ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100)); for (ConsumerRecord<String, String> record : records) { System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value()); // TODO: 消费逻辑 } } ``` 在这个示例中,我们通过设置Properties对象来配置消费者的参数,包括Kafka集群的地址、消费者组ID、自动提交偏移量、反序列化器等。然后创建一个KafkaConsumer对象,并通过subscribe()方法订阅一个主题。在while循环中,我们通过poll()方法从Kafka中读取消息,然后通过for循环遍历消息,并对消息进行处理(这里只是简单地打印消息的内容)。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值