使用pycharm远程调试
使用pycharm 专业版, 在设置解释器中,具备ssh 解释器功能;
一般在本地无法调试远程端代码,机械性的scp传输文件十分影响工作效率,PyCharm的Pro支持远程Run,Debug,等可视化的功能。
- 操作系统:本地MacOS,远程Linux (本地3个操作系统都是支持的,远程Linux比较稳定)
- IDE: 最新版本 PyCharm Pro (不支持社区版)
- python虚拟环境:Anaconda,pip,virtualenv
1. 远程服务器上的环境配置
在使用本地的pycharm 远程 服务器上的pycharm ,
需要获取服务器上的如下信息;
- 服务器上的项目路径,需要将数据集提前准备好放在服务器上;
- 远程调试时,需要用到服务器中的环境路径, 指定到虚拟环境中的python 路径下面;
- 服务器端的用户名,ip 地址, port 端口;
1.1 服务器信息
从服务器上获取如下信息;
1. project path: pwd
/home/yons/Documents/python_proj/02_patch-mix_contrastive_learning/patch-mix_contrastive_learning-main2. conda python environments path:
/home/yons/anaconda3/envs/torch2.1.0/bin/python3.83. Username: whoami
yons
4. ip, ifconfig
inet 192.168.xx.xx
5. port: use default22
1.2 远程环境的配置
在服务器上, 需要检查三件事情,
1.2.1 ufw 已经启用
sudo ufw enable
检查状态:
要验证 SSH 规则是否已添加并且防火墙是否处于活动状态,请运行
sudo ufw status
1.2.2. 允许 端口22 进行通信
使用端口 22, 是因为配置pycharm 中 端口默认的是22;
允许 SSH(端口 22):
现在 UFW 已启用,应该允许默认端口 22 上的 SSH 流量。使用以下命令:
sudo ufw allow 22/tcp
1.2.3. ssh 服务已经启动
检查 SSH 服务状态:
确保 SSH 服务正在远程服务器上运行。您可以使用以下命令检查其状态
sudo systemctl status ssh
如果该服务未运行,请使用以下命令启动它:
sudo systemctl start ssh
- 如果出现: unit ssh.service could not be found
列出名称中包含“ssh”的所有服务单元,可以使用以下命令:
systemctl list-units | grep ssh
如果没有输出的话,
要确定是否安装了 SSH,您可以使用特定于您的 Linux 发行版的包管理工具。
dpkg -l | grep openssh-server
如果未安装 SSH 服务器,您应该使用包管理器安装它。
例如,在 Ubuntu 上,您可以使用以下命令安装它:
sudo apt update
sudo apt install openssh-server
确保 SSH 服务确实已安装并在您的 Ubuntu 20.04 系统上正常运行。
sudo systemctl status ssh.service
如果服务正在运行,您应该会看到其状态并处于活动状态(正在运行)。
将 systemctl 与服务名称或别名一起使用时,使用完整的服务名称非常重要,在本例中为 ssh.service 。使用别名可能无法按预期工作。
sudo systemctl start ssh.service
1.3 新建或打开项目
首先在远程服务器上新建或者打开一个项目文件,
注意该项目文件后期会与本地的项目文件进行同步
,
python虚拟环境可以使用之前的,或者自己新建一个。
这里需要记录下项目的路径,以及conda的python路径,在Linux系统下anaconda的虚拟环境一般会在当前用户目录下,例如:
/home/USER/.conda/envs/YOUR_CONDA_ENVIRONMENT/bin/pythonX
虚拟环境python路径
2. 本地远程连接
2.1 pycharm新建项目
在本地端使用PyCharm打开之前的项目,或者新建一个项目,Interpreter暂时
选择本地的,
这里的 暂时表示 后续,我们会替换成服务器上的虚拟环境;
- 使用⌘,打开Preferences菜单,新建一个python环境。
2.2 添加新的Interpreter
Preference --> Python Interpreter --> Add
2.3 登录服务器
- 选择SSH Interpreter --> New server configuration
填写远程端的IP,Port,以及Username,点击Next,输入远程用户登录密码。
- 填写远程python路径,以及项目路径用于同步代码,点击Finish即可。
在本地就可以加载远程端python环境了。
2.4 设置文件同步映射
Tools --> Deployment --> Configuration
- 填写远程端的ip地址,Type为SFTP模式,项目路径,完成点击确认。
- 同步文件,可以使用快捷键,也可以右键后点击同步即可实现将本地端文件发送至远程端文件夹中,pycharm也会自动上传本地文件。
2.5 运行、调试远程代码
- 同步文件后在本地端运python代码,可以看到是在远程环境下运行文件。
- 调试,打断点也可以实现。
- 远程python环境第一次新建之后,可以在Exist里找到,可以重复使用,每次只用修改映射的文件夹路径即可;
- 远程调试在多线程、多进程可能会出现问题,pytorch代码时,worker尽量设置成0;
- 可视化的脚本目前是支持OpenCV和Matplotlib可视化。
reference
https://zhuanlan.zhihu.com/p/265152953
相关文章:

使用pycharm远程调试
使用pycharm 专业版, 在设置解释器中,具备ssh 解释器功能; 一般在本地无法调试远程端代码,机械性的scp传输文件十分影响工作效率,PyCharm的Pro支持远程Run,Debug,等可视化的功能。 操作系统&…...

rust学习
rust学习 String类型clone和copy结构体的内存分布for循环(<font color red>important!)堆和栈数据结构vector panic失败就 panic: unwrap 和 expect传播错误 模式匹配忽略模式的值绑定 泛型特征Trait定义特征为类型实现特征孤儿规则使…...

GCC、g++、gcc的关系
GCC、g、gcc的关系 引言 VsCode中对编译环境进行配置的时选择编译器时发现有多种不同的编译器 GNU计划和GCC GNU的全称 GNU’s Not UNIX GNU是一个计划 Q:为什么会有这个计划 因为当时的Unix开始收费和商业闭源,有人觉得不爽→ 想要自己开发和Unix类似的→GNU计划 GUN计划目…...

IP应用场景API的反欺诈潜力:保护在线市场不受欺诈行为侵害
前言 在数字化时代,网络上的商业活动迅速增长,但与之同时,欺诈行为也在不断演化。欺诈者不断寻找新方法来窃取个人信息、进行金融欺诈以及实施其他不法行为。为了应对这一威胁,企业和组织需要强大的工具,以识别和防止…...

常用的主流音乐编曲软件有哪些?
FL Studio是一款备受音乐人喜爱的超强编曲软件。最新的FL Studio版本将所有音频形式都视为采样,使得它在各个领域都有出色的表现。该软件操作简单,界面友好,非常适合新手全面学习和使用。此外,FL Studio完美支持Windows和Mac操作系…...

面试题:为什么HashMap 使用的时候指定容量?
文章目录 前言正文为什么要指定容量? 前言 其实可以看到我写了这么久的博客,很少去写hashMap的东西。 为什么?因为这个东西感觉是java面试必备的,我感觉大家都看到腻了,所以一直没怎么去写hashMap相关的。 本篇内容&…...

基于C/C++的UG二次开发流程
文章目录 基于C/C的UG二次开发流程1 环境搭建1.1 新建工程1.2 项目属性设置1.3 添加入口函数并生成dll文件1.4 执行程序1.5 ufsta入口1.5.1 创建程序部署目录结构1.5.2 创建菜单文件1.5.3 设置系统环境变量1.5.4 制作对话框1.5.5 创建代码1.5.6 部署和执行 基于C/C的UG二次开发…...

“第五十二天”
算术逻辑单元: 之前提过的运算器包括MQ,ACC,ALU,X,PSW;运算器可以实现运算以及一些辅助功能(移位,求补等)。 其中ALU负责运算,运算包括算术运算(加减乘除等)和逻辑运算(…...

Lvs+Nginx+NDS
什么是?为什么?需要负载均衡 一个网站在创建初期,一般来说都是只有一台服务器对用户提供服务 从图里可以看出,用户经过互联网直接连接了后端服务器,如果这台服务器什么时候突然 GG 了,用户将无法访问这…...

JavaWeb——Servlet原理、生命周期、IDEA中实现一个Servlet(全过程)
6、servlet 6.1、什么是servlet 在JavaWeb中,Servlet是基于Java编写的服务器端组件,用于处理客户端(通常是Web浏览器)发送的HTTP请求并生成相应的HTTP响应。Servlet运行在Web服务器上,与Web容器(如Tomcat&…...
Android 12.0 ota升级之SettingsProvider新增和修改系统数据相关功能实现
1. 前言 在12.0的系统rom定制化开发中,在解决一些已经上线的bug后,进行ota升级的过程中,由于在SettingsProvider中新增了系统属性和修改某项系统属性值,但是在ota升级以后发现没有 更新,需要恢复出厂设置以后才会更改,但是恢复出厂设置 会丢掉一些数据,这是应为系统数据…...

python---for循环结构中的else结构(是同级关系)
为什么需要在for循环中添加else结构 循环可以和else配合使用, else下方缩进的代码指的是当循环正常结束之后要执行的代码。 强调: 循环 正常结束,else之后要执行的代码。 非正常结束,其else中的代码是不会执行的。…...
XLua中lua读写cs对象的原理
LuaCallCS 1. 传递C#对象到Lua XLua在C#维护了两个数据结构,ObjectPool和ReverseMap。 首次传递一个C#对象obj到Lua时,对象被加入到ObjectPool中,并为它创建一个唯一标识objId,建立obj和objId的双向映射。 ObjectPool: objId-…...

新手小白怎么选择配音软件?
现在的配音软件软件很多,各种类型的都比较多,对于新手小白来说不知该如何选择,今天就来给你分享几款好用的配音软件。不论是制作短视频还是制作平常音频都完全可以。 第一款:悦音配音 这是一款专业的视频配音软件,多端…...
linux查看硬件信息命令
文章目录 cpu内核版本内存硬盘主板服务器参考链接 cpu cat /proc/cpuinfo 一个物理CPU可以有1个或者多个物理内核,一个物理内核可以作为1个或者2个逻辑CPU。 物理CPU数就是主板上实际插入的CPU数量。 在Linux上cat /proc/cpuinfo,会打印每个cpu的信息 …...

TSINGSEE青犀省级高速公路视频上云联网方案:全面实现联网化、共享化、智能化
一、需求背景 随着高速铁路的建设及铁路管理的精细化,原有的模拟安防视频监控系统已经不能满足视频监控需求,越来越多站点在建设时已开始规划高清安防视频监控系统。高速公路视频监控资源非常丰富,需要对其进行综合管理与利用。通过构建监控…...

知识图谱相关的操作
微软生成自己的图谱:GitHub - microsoft/SmartKG: This project accepts excel files as input which contains the description of a Knowledge Graph (Vertexes and Edges) and convert it into an in-memory Graph Store. This project implements APIs to searc…...

【Javascript】json
目录 什么是json? 书写格式 json 序列化和反序列化 序列化 反序列化 什么是json? JSON(JavaScript Object Notation)是⼀种轻量级的数据交换格式,它基于JavaScript的⼀个⼦集,易于⼈的编写和阅读,也易于机器解析…...

零资源的大语言模型幻觉预防
零资源的大语言模型幻觉预防 摘要1 引言2 相关工作2.1 幻觉检测和纠正方法2.2 幻觉检测数据集 3 方法论3.1 概念提取3.2 概念猜测3.2.1 概念解释3.2.2 概念推理 3.3 聚合3.3.1 概念频率分数3.3.2 加权聚合 4 实验5 总结 摘要 大语言模型(LLMs)在各个领域…...
智能终端界面自动化测试操作工具 - Appium常见用法
1. Appium 是什么可以做什么? Appium 是一款开源的移动应用自动化测试框架,用于测试移动应用程序的功能和用户界面。它支持多种移动平台,包括 Android 和 iOS,可以使用多种编程语言进行脚本编写,如 Python、Java、Jav…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
Python爬虫实战:研究Restkit库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...
React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?
系列回顾: 在上一篇《React核心概念:State是什么?》中,我们学习了如何使用useState让一个组件拥有自己的内部数据(State),并通过一个计数器案例,实现了组件的自我更新。这很棒&#…...