一分钟搞定pychram和服务器端远程同步和调试代码

首先说一下需求,否则很多人都不知道pycharm这个远程同步和调试到底是干嘛使的。

需求很简单,我想要在本地的windows机器上跑一个程序,但是程序运行会加载一些很占内存的树型数据结构,称其为tree;这些tree的大小有20G,需要全部加载到内存当中才能够使的程序跑起来,这下完了,我的计算机配置内存才8G,如果tree都加载到内存中肯定会爆掉。因为公司服务器的内存为90G,所以完全可以用其来加载tree。但是其中一个问题是我可以将代码传送到公司服务器上,然后在其上面跑,但是一旦我需要修改代码或者调试代码时候就显得无能为力了,因为服务器没有装pycharm,也没有装可视化的桌面环境。所以如果我能在windows的pycharm能够对linux上的程序进行调试,并且windosw端一旦修改代码还可以同步到linux上,这样就很完美了。正好pycharm本身就有这个功能,为的就是方便大家在linux上开发程序。接下来我将用非常简短的步骤来实现上面的需求,我在看上面参考网址中其他的人写的教程时候感觉都很麻烦,啰里啰嗦,而且逻辑混乱。本来很简单的步骤,弄得复杂无比,坑人!!!

这里我再稍微啰嗦一下pycharm的远程调试原理,其实很简单,我们的python运行是依赖解释器的,解释器包编译器和虚拟机,为了理解简单起见,可以直接将解释器理解为一个可以将我们写的代码转换为cpu可以识别的二进制代码,并可以将这些二进制代码运行的东东。pycharm其实是可以选择不同的解释器的,默认情况下是选择本地安装的解释器,但是如果我们给pychram配置了一个服务器端的解释器,并将本地的代码和服务器端的代码做了一个映射后,那么pycharm就可以加载服务器端的解释器来运行服务器端的代码,这样就相当于在本地的pycahrm上看到服务器端的程序运行情况,即远程调试目的就达到了;

1、准备工作,本地为windows7系统,pycharm为专业版,社区版是没有远程调试的功能的。服务器为centos系统(我们暂且称其为z服务器),首先我需要先获取服务器端python解释器所在的路径:

首先进入服务器的python,然后运行:

[[email protected] mnt]# python
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.executable
‘/home/mnt/anaconda3/bin/python‘
>>> 

可以看到k服务器上的python解释器的路径为:/home/mnt/anaconda3/bin/python

接下来直接配置远程的解释器:

file-setting-project,然后点击interpreter,然后点击右上角的齿轮图标后,会显示Add,

点击Add会跳出如下界面:选择SSH 解释器这一栏,然后配置服务器端的ip,用户名,密码即可;

点击确定后,需要将上面服务器端的python解释器路径输入其中,然后还需要配置Sync folders,这个路径就是本机的代码文件夹和服务器端的代码文件夹,要对应好。另外对于Automacitally upload那个不要勾选。

到此其实整个环境就配置完成了。

接下来我们只需将本地代码上传到服务器端即可:

这里我们如果想上传new这个文件夹,需要在projecet这个栏位中右键,然后点击 Deployment upload to选择上传的服务器即可,这样就将代码上传到上面配置的路径中了;

如果我们想要调试代码,则还在编译器那一栏选择 服务器端的编译器,然后确定即可。接下来就按照本地的调试代码方法调试即可。

下面我总结一下可能遇到的问题:

有的时候解释器配置好了,但是pycharm右下角会有一个 event log,点击之后会发现

Cant get remote credentials for deployment server root @192.000.000.00 的提示:

这个报错提示是没有获取远程开发环境的许可,需重新再次配置一下:

首先 file-setting,点击红色区域按钮,

选择show all

选择当前解释器:

点击红色区域小笔头重新进行配置:

首先我们看到 红色区域中填写的配置信息是正常的,接下来我们看一下 SSH Credentials这一栏:

发现是空的,所以我们要将其进行重新填写一下,即可;

此外还要注意一点:如果我想要同步本地的文件夹 file下的所有文件到服务器端,首先应该先在服务器端建立一个file文件夹,然后本地工程中右击 file文件夹上传到服务器端的file文件夹下即可,同步是不会在服务器端新建一个当前同步的文件夹的,必须手动在服务器端建立一个相同名字的文件夹才行!!!

参考网址:

https://www.cnblogs.com/Alier/p/8536123.html Pycharm远程连接服务器,并在本地调试服务器代码

https://blog.csdn.net/five3/article/details/78615589 Pycharm配置远程调试

https://zhuanlan.zhihu.com/p/36843200 PyCharm远程调试代码(有点过时了)

https://juejin.im/post/5b08dae651882538b978dcb3 Python远程调试图文教程(一)之Pycharm Remote Debug(内容很多)

https://blog.csdn.net/qq_24193303/article/details/80902322 机器学习中 如何使用 Pycharm 将代码上传到远程服务器上 侧重代码上传

原文地址:https://www.cnblogs.com/zxyza/p/11184611.html

时间: 2024-08-30 00:58:26

一分钟搞定pychram和服务器端远程同步和调试代码的相关文章

一分钟搞定AlloyTouch图片轮播

一分钟搞定AlloyTouch图片轮播 轮播图也涉及到触摸和触摸反馈,同时,AlloyTouch可以把惯性运动打开或者关闭,并且设置min和max为运动区域,超出会自动回弹.除了一般的竖向滚动,AlloyTouch也可以支持横向滚动,甚至任何属性的运动,因为它的设计的本质就是属性无关,触摸可以反馈到任何属性的运动.所以AlloyTouch制作各种各样的轮播组件还是得心应手. 第一种轮播图如上图所示.下面开始实现的过程. 第0秒 <div id="carousel-container&quo

HDFS-异常大全-《每日五分钟搞定大数据》

点击看<每日五分钟搞定大数据>完整思维导图以及所有文章目录 问题1:Decomminssioning退役datanode(即删除节点) 1.配置exclude: <name>dfs.hosts.exclude</name> <value>/data/hadoop/excludes</value> 在/data/hadoop/excludes文件添加要退役的节点ip(可同时退役多个,一个一行) 2.配置完后刷新节点 # $HADOOP_HOME/b

一篇文章搞懂DataSet、DataFrame、RDD-《每日五分钟搞定大数据》

1. 三者共性: 1.RDD.DataFrame.Dataset全都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利 2.三者都有惰性机制,执行trainform操作时不会立即执行,遇到Action才会执行 3.三者都会根据spark的内存情况自动缓存运算,这样即使数据量很大,也不用担心会内存溢出 4.三者都有partition的概念,如 var predata=data.repartition(24).mapPartitions{       PartLine => {     

zookeeper-非常重要的zab协议-《每日五分钟搞定大数据》

上篇文章paxos与一致性说到zab是在paxos的基础上做了重要的改造,解决了一系列的问题,这一篇我们就来说下这个zab. zab协议的全称是ZooKeeper Atomic Broadcast即zookeeper"原子""广播"协议.它规定了两种模式:崩溃恢复和消息广播 恢复模式 什么时候进入? 当整个服务框架在启动过程中 当Leader服务器出现网络中断崩溃退出与重启等异常情况 当有新的服务器加入到集群中且集群处于正常状态(广播模式),新服会与leader进行

Spring Boot 返回 XML 数据,一分钟搞定!

Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定!. 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spring Boot 开启的 2 种方式 Spring Boot 自动配置原理.实战 Spring Boot 2.x 启动全过程源码分析 更多请在Java技术栈微信公众号后台回复关键字:boot. 如

1分钟搞定Android开发智能提示问题xml文件一并搞定

eclipse 搭建的Android开发环境,但是开发起来发现IDE的提示功能不是很理想,在此总结了一下,1分钟内,2步搞定! 如下: 1.设置.java文件的提示 将红框中的值设置为:.abcdefghigklmnopqrstuvwxyz 这样输入任何小写字母都能唤出提示了. t2.jpg (958.47 KB, 下载次数: 0) 下载附件 12 分钟前 上传 效果如下: 2.设置.xml文件的提示 效果如下:

zabbix3.0 使用SS代替netstat无需脚本,1分钟搞定TCP状态监控

这段时间一直忙,没时间好好理下监控,趁着假期有时间,理了一下. 对于zabbix监控TCP状态,在网上查了很多资料,大多数都是使用netstat命令来实现. 如果服务器的压力小,链接少,不会有问题,但随着服务器压力和链接数的增加,用netstat就会造成执行速度慢,server端无法接收到执行结果,造成监控异常. 平时一直用SS,所以试着用SS代替netstat,速度快了不少. 个人较喜欢偷懒,看到网上很多少写了非常长的脚本,又是函数,又是写临时文件的.其实完全没必要,不用写啥脚本,临时文件,很

运维日常:五分钟搞定PHP的redis问题

一.前言 1.需求 2.解决LNMP环境中的PHP缺少redis扩展包,导致访问页面报错500,处理问题,安装PHP扩展功能redis. 下面记录整个过程,如果不想看,而只想在最短的时间内搞定这个问题,请直接翻到最后,使用脚本. 二.安装 1.下载扩展包 [[email protected] source]# git clone https://github.com/nicolasff/phpredis Cloning into 'phpredis'... remote: Enumerating

十分钟搞定CSS选择器

在最近的web开发中是不是就会用到一些选择器,发现很多尤其是CSS3新增的不太熟悉,在此总结一下. 优先级 不同级别 1. 在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式. 2.作为style属性写在元素内的样式 3.id选择器 4.类选择器 5.标签选择器 6.通配符选择器 7.浏览器自定义 同一级别 同一级别中后写的会覆盖先写的样式 基础选择器 选择器 含义 * 通用元素选择器,匹配页面任何元素(这也就决定了我们很少使用) #id id选择器,匹配特定id的元素 .