Pycharm配置远程调试

Pycharm远程调试 Python Remote Debug 背景 首先明确一下,这篇笔记的具体目的:因为实验室使用slurm管理调度服务器资源,所以要求通过使用sbatch命令提交批处理作业,而且只能访问集群的控制节点,不能直接访问计算节点,也就是说不能直接在pycharm上配置计算节点所在的服务器环境来进行debug,但是批处理作业提交非常不方便我们调试代码,今天研究了一下,在此记录一下,在这种情况下,如何配置pycharm环境,使得我们可以用sbatch提交作业的情况下,也能使用pycharm进行debug调试我们的代码。 如果需要配置通常情况下,(这里指的是可 阅读详情

条件

  1. pycharm需要专业版

方式

  1. 使用远程解释器
  2. 使用远程调试器

使用远程解释器

默认情况下我们在本地开发Python程序时,使用的是本地的Python解释器,如果你安装了virtualenv或者pyenv的话,还可以选择这些虚拟环境。而使用Pycharm的专业版,则还可以选择使用远程Linux机器上的解释器。下面就来介绍下使用远程解释器的步骤。

 

远程部署配置

远程部署主要用于本地代码与远程服务器上的代码进行同步,使得的本地代码在经过修改后,可以很容易的同步到远程服务器上。因为只有本地代码和远程服务器上的代码一致时,才能正确使用远程解释器进行调试。

 

(当然你可以使用其它的同步方法,甚至是自己手动复制,但推荐这种最方便的方式)

 

  1. 打开Pycharm
  2. 选择Tools -> Deployment -> Configuration..
  3. 点击+添加一个新的Deployment配置
  4. 在Connection的Tab设置基本信息
  5. 通过高级选项配置文件字符编码
  6. 在Mappings的Tab设置映射关系
  7. 在Excluded Path设置不同步哪些文件
  8. 最后点击OK确定

远程解释器配置

远程部署仅仅只是同步和拷贝文件,而真正支持远程调试的则是远程解释器。具体配置如下:

 

  1. 拷贝本地Pycharm安装目录下的helpers目录中的所有文件
  2. 上传到远程服务器的登录用户home目录下。如:使用的是root用户,则拷贝至/root/.pycharm_helpers目录下
  3. 在Pycharm中选择File -> Settings -> Project:xxx -> Project Interpreter -> Add Remote
  4. 在打开的窗口中填入相应信息,并确定
  5. 选择使用远程解释器

远程调试使用

  1. 确保本地代码的改动已经同步到远程的服务器
  2. 在Pycharm中对指定的代码打断点
  3. 使用debug模式启动代码
  4. 访问远程服务器上的程序(如:远程服务是一个web服务,则需要访问远程的web访问地址)
  5. 本地debug生效

使用远程调试器

 

 

官方文档

https://blog.jetbrains.com/pycharm/2013/03/how-pycharm-helps-you-with-remote-development/

想了解更多关于Python的知识,请扫描如下二维码哦!!

在PyCharm中使用pyenv指定的Python:配置指南 本文详细介绍了如何在PyCharm中配置使用pyenv管理的Python版本。首先需要安装pyenv并添加所需Python版本,然后在PyCharm设置中选择对应的Python解释器路径。文章提供了配置步骤、验证方法和常见问题解决方案,帮助开发者轻松实现多版本Python环境管理,提高开发效率。 阅读详情

相关推荐

PyCharm配置SFTP远程调试Django应用

[-] 一SSH简介二公钥认证的基本思想三实验网络拓扑图和实验目的 网络拓扑图实现目的补充说明 四无密码登录实现方式 用ssh-keygen创建公钥查看钥匙将公钥复制到被管理机器Server2和Server3下的ssh目录下先确保存在这个目录设置文件和目录权限验证使用SSH IP地址的方式无密码访问验证使用SSH 主机名的方式无密码访问 五注意 之前一直

Yusufchang 1万+

配置Pycharm进行远程开发

介绍了在pycharm上配置远程的开发环境,开启自动同步

rexxa的博客 6883

一、基础-python准备【pyenv环境、开发工具pycharm】

Python 不同版本有兼容性和依赖性问题,可以通过pyenv ,他是一个 Python 版本管理工具。

1487

pycharm 远程调试图文_Pycharm配置远程调试的图文步骤

Pycharm配置远程调试方法总结动机一些bug由于本地环境和线上环境的不一致可能导致本地无法复现本地依赖和线上依赖版本不一致也可以导致一些问题有时一些bug跟数据相关,本地数据无法和线上数据一致有些三方平台会验证服务器的合法性或者异步回调结果,如微信支付,这时候本地无法测试如上所诉,要是有一个很方便调试远程服务器的方法,岂不美哉。通过PyCharm我们可以很方便地实现远程调试,下面详细介绍下Py...

weixin_30666427的博客 507

《AI应用架构师必学:企业AI能力地图构建的高级技巧》

企业AI能力地图,简单来说,是一种可视化工具,它展示了企业在AI领域所具备的各种能力及其相互关系。就如同城市地图展示城市的街道、建筑和设施一样,AI能力地图呈现了企业在数据处理、模型开发、算法应用等多个方面的能力布局。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 818

Abaqus SIGTERM/SIGINT中断问题深度解析与实战解决方案

本文深度解析Abaqus仿真计算中因SIGTERM或SIGINT信号导致作业意外终止的常见问题。核心原因常为许可证管理器因网络通信延迟误判进程空闲而强制断开,或系统资源监控工具的误杀。文章提供了从命令行参数调优(如使用int、ask_delete=OFF)、计算环境隔离到编写自动化容错脚本的完整实战解决方案,帮助用户彻底规避此类中断,确保长时间仿真任务的稳定运行。

weixin_29279101的博客 408

pycharm远程调试python_PyCharm远程调试配置流程

我们可能会在本地主机建立项目和编辑代码,不过一些深度学习任务需要用到 GPU 硬件支持,这时我们需要把代码在 SSH 远程服务器下运行和调试。这种情况下,调试代码,设置断点和监视变量值,就需要用到远程调试。远程调试是 PyCharm Professional 才支持的功能,Pycharm Community Edtion 并不支持。在这个页面下载 Pycharm Professional。Prof...

weixin_31482671的博客 1679

Abaqus边界条件设置避坑指南:为什么你的实体单元转动自由度总是不生效?

本文深入解析了Abaqus中实体单元转动自由度设置失效的根本原因。从力学原理与有限元节点自由度的本质区别出发,阐明了实体单元仅具有平动自由度,直接约束其转动自由度是无效操作。文章提供了对称边界条件的正确设置方法,并给出了使用耦合约束等高级方案来模拟真实抗转动约束的实战指南,帮助用户避免常见建模陷阱。

weixin_29290379的博客 620

Pycharm2023版本:Python远程调试配置详解

pycharm远程调试配置,工欲善其事必先利其器。

梦想专栏 3291

[cryoEM] cryoSPARC简介

cryoSPARC系统结构概述 cryoSPARC是一个后端和前端高性能计算软件系统,为单颗粒冷冻电镜提供数据处理和图像分析能力,以及丰富的基于浏览器的用户截面和命令行工具。 Master-worker模式 系统基于主用户模式。 主进程(web应用,核心应用程序和MongoDB数据库)一起在主节点上运行。主节点需要相对轻量级的资源(2+ CPU< 16GB+ RAM)。 工作程序进程可以在具有GPU的任何可用节点上生成,负责所有实际计算和数据处理,并由主节点调度。注意:同一节点可以同时充当主节点和辅

进阶中的程序员吃吃的博客 7795

嵌入式设备电量显示实战:MCP3421 ADC采集从原理到代码全解析(附避坑指南)

本文详细解析了嵌入式设备中MCP3421 ADC芯片在电量显示应用中的硬件设计、寄存器配置、I2C通信调试及低功耗优化策略。通过实战代码和避坑指南,帮助开发者实现高精度电量监测,特别针对I2C时序和分压电路设计等常见问题提供解决方案,适用于物联网终端和移动设备开发。

weixin_42525632的博客 385

PyCharm远程调试代码配置以及运行参数设置

一、 远程文件配置 打开远程服务器部署 部署远程服务器 随便起个名字 选择一个SSH配置(SSH的配置不过多介绍,就是输入服务器的ip、端口、账号密码) 在映射页面选择本地项目路径以及服务器上的项目路径 点左上角“√” 以激活环境,被激活的环境会被加粗显示 二、 解释器配置 进入Pycharm的设置界面,在项目配置中点击图中的齿轮⚙图标添加环境 选择SSH解释器,并 ...

艾渃曼の博客 8051

智能能效管家:基于 ESP32 的智能插座设计与精细化功耗管理实现

针对传统插座无法远程控制、功耗监测缺失、能源浪费严重等问题,本文设计一款基于 ESP32 主控芯片的智能插座。该系统集成 WiFi 无线通信、交流功耗采集、继电器通断控制模块,实现四大核心功能。硬件采用模块化选型与安全接线设计,软件基于 Arduino-ESP32 框架开发,搭载 Mqtt 通信协议与功耗算法,可通过手机 / 云端实时管控设备,有效提升用电安全性与能源利用率。:ESP32;智能插座;功耗管理;远程控制;能耗监测。

weixin_42300449的博客 100

# 用 PyCharm 进行远程调试debugger-配置远程解释器

文章目录一、用 PyCharm 进行远程调试debugger1. 方法1:我们配置了远程解释器1.1 pycharm可以远程解释器运行,但是不能debug2. 方法2 使用 Python 远程调试服务器配置2.2 远程调试原理 一、用 PyCharm 进行远程调试debugger 官网:Remote Debugging with PyCharm 用 PyCharm 进行远程调试 https://www.jetbrains.com/help/pycharm/remote-debugging-with-pr

西京刀客 7274

【毕设级教程】从0到1实现基于YOLOv8的UA-DETRAC交通目标检测系统(含UI界面,助力智能交通毕设)

本项目基于YOLOv8模型和UA-DETRAC数据集开发了一个交通目标检测系统,包含数据处理、模型训练和可视化界面全流程。UA-DETRAC数据集包含多种交通场景下的车辆标注,通过格式转换适配YOLOv8训练要求。系统采用PyQt开发交互界面,支持图像检测、结果显示等功能。该项目技术路线清晰,既展现深度学习在智能交通中的应用,又提供完整的可视化展示方案,适合作为计算机视觉相关毕业设计选题。

m0_64661770的博客 149

交货单冲销发货过账的正确姿势:用 VL09 与 ABAP 批量反冲 Goods Issue

摘要 本文详细解析了SAP系统中VL09事务码的技术实现与业务应用。VL09用于反冲发货的货物移动,通过标准冲销路径(移动类型602冲销601)确保单据链路一致、状态机正确回退和业务规则生效。文章对比了经典VL09与Fiori应用在不同SAP产品形态中的位置,并针对STO场景提供了ME23N验证方法。核心内容包括WS_REVERSE_GOODS_ISSUE函数模块的调用要点、必须COMMIT的原因(SAP LUW机制),以及处理Handling Unit等限制条件的注意事项。最后给出了将VL09工程化的项目

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 587

pycharm远程调试配置

目录: 安装pycharm 配置pycharm远程调试 使用测试 一、安装pycharm(略) 二、配置pycharm远程调试 1、菜单--->Tools--->Deployment--->Configuration 2、点击加号,添加server---〉选择SFTP 3、输入IP、用户名,密码,Python项目目录: 4、Mappings选...

weixin_30905981的博客 183

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

pycharm远程调试配置流程(详细)

远程配置 必要准备 确保远端服务器已安装ssh,并可有效访问链接 pycharm 的版本要为专业版本,社区版无此功能

guoyubo777的博客 1046

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python调试器原理_Pycharm远程调试原理及具体配置详解

前言工作中使用Pycharm作为python开发的IDE,作为专业的python集成开发环境,其功能之强大令人折服。开发过程中Debug是必不可少的。平时经常使用Pycharm的remote debug功能,非常好用。但是刚开始的时候并不了解该过程的原理,只是按部就班的配置。于是抽空了解了一下相关知识,期待能够了解其原理,今后能够在需要的时候自己独立的配置调试环境。本文将以浅显易懂的方式讲解一下相...

weixin_39710249的博客 426

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

pycharm配置远程环境下调试

下面以配置centos7远程调试为例进行说明。1.打开pycharm。2.打开Tools-&gt;Deployment-&gt;configration..3.点击“+”添加一个新的Deployment配置。6.在connection的tab设置基本信息7.通过高级选项配置文件字符编码8.pycharm的远程调试参考https://blog.youkuaiyun.com/ll641058431/article...

piemon的博客 1202

SSH连接docker容器配置pycharm远程调试

1 测试环境 操作系统:Ubuntu Server 16.04.6 docker版本:18.09.4 docker镜像:yxz_image 2 配置步骤 2.1 创建容器时指定映射的端口 docker run -itd --runtime=nvidia --name=eloquent_mclaren -e NVIDIA_VISIBLE_DEVICES=6 -v /datasets/:/dat...

﹎厡.唻 2641

python PyCharm远程调试Python( PyCharm配置远程python解释器)

文章目录PyCharm远程调试Python远程部署配置远程解释器配置工作中问题总结pycharm远程服务器运行Can‘t run remote python interpreter:Can‘t get remote credentials for deployment server参考 PyCharm远程调试Python 默认情况下我们在本地开发Python程序时,使用的是本地的Python解释器,如果你安装了virtualenv或者pyenv的话,还可以选择这些虚拟环境。而使用Pycharm的专业版,则还

西京刀客 1万+

python远程调试_Pycharm配置远程调试的方法步骤

动机一些bug由于本地环境和线上环境的不一致可能导致本地无法复现本地依赖和线上依赖版本不一致也可以导致一些问题有时一些bug跟数据相关,本地数据无法和线上数据一致有些三方平台会验证服务器的合法性或者异步回调结果,如微信支付,这时候本地无法测试如上所诉,要是有一个很方便调试远程服务器的方法,岂不美哉。通过PyCharm我们可以很方便地实现远程调试,下面详细介绍下PyCharm这个牛叉的功能。使用远程...

weixin_39559804的博客 384
上一篇: 再谈Python多线程--避免GIL对性能的影响
下一篇: MySQL并发更新数据加锁处理
上帝De助手
上帝De助手 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄19年 1494粉丝 215原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上帝De助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值