首先说一下需求,否则很多人都不知道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,然后运行:

[root@localhost 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 将代码上传到远程服务器上 侧重代码上传

一分钟搞定pychram远程调试和同步代码的更多相关文章

  1. windows+mysql集群搭建-三分钟搞定集群

    注:本文来源:  陈晓婵   <  windows+mysql集群搭建-三分钟搞定集群   > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...

  2. JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)

    前言:关于Vue框架,好几个月之前就听说过,了解一项新技术之后,总是处于观望状态,一直在犹豫要不要系统学习下.正好最近有点空,就去官网了解了下,看上去还不错的一个组件,就抽空研究了下.最近园子里vue ...

  3. 一分钟搞定AlloyTouch图片轮播

      一分钟搞定AlloyTouch图片轮播 轮播图也涉及到触摸和触摸反馈,同时,AlloyTouch可以把惯性运动打开或者关闭,并且设置min和max为运动区域,超出会自动回弹.除了一般的竖向滚动,A ...

  4. 五分钟搞定Go.js

    五分钟搞定Go.js  1.基于html5~因为Go.js是一个依赖于HTML5特性的JavaScript库,所以需要确保您的页面声明它是一个HTML5文档,当然需要加载库 <!DOCTYPE ...

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

    Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定! ...

  6. zookeeper-架构设计与角色分工-《每日五分钟搞定大数据》

    本篇文章阅读时间5分钟左右 点击看<每日五分钟搞定大数据>完整思维导图   zookeeper作为一个分布式协调系统,很多组件都会依赖它,那么此时它的可用性就非常重要了,那么保证可用性的同 ...

  7. zookeeper核心-zab协议-《每日五分钟搞定大数据》

    上篇文章<paxos与一致性>说到zab是在paxos的基础上做了重要的改造,解决了一系列的问题,这一篇我们就来说下这个zab. zab协议的全称是ZooKeeper Atomic Bro ...

  8. 十分钟搞定pandas内容

    目录 十分钟搞定pandas 一.创建对象 二.查看数据 三.选择器 十二.导入和保存数据 参考:http://pandas.pydata.org/pandas-docs/stable/whatsne ...

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

    点击看<每日五分钟搞定大数据>完整思维导图以及所有文章目录 问题1:Decomminssioning退役datanode(即删除节点) 1.配置exclude: <name>d ...

随机推荐

  1. MySql索引机制

    第一部分 MySQL数据库索引的数据结构及算法理论 第二部分 MySQL索引实现机制 第三部分 MySQL中高性能使用索引的策略 数据结构及算法 MySQL官方对索引的定义为:索引(Index)是帮助 ...

  2. 如何使用keras加载下载好的数据集

    https://blog.csdn.net/houchaoqun_xmu/article/details/78492718 [keras]解决 example 案例中 MNIST 数据集下载不了的问题 ...

  3. python-day5爬虫基础之正则表达式2

    dot: '.'匹配任意的字符 '*'匹配任意多个(0到多个) 如图所示, 程序运行结果是abc,之所以没有匹配\n,是因为\n是换行符,它就代表这个字符串是两行的,而正则表达式是一行一行去匹配的.在 ...

  4. Spring的设计理念和整体架构

    1.Spring的各个子项目 Spring Framework(Core):这是我们熟知的Spring项目的核心.Spring Framework(Core)中包含了一系列Ioc容器的设计,提供了依赖 ...

  5. BZOJ4059[Cerc2012]Non-boring sequences(扫描线/分治)

    这题正解应该是扫描线,就是发现DP的区间在两个维度都为连续段,于是可以直接扫描线.但不幸的是,扫描线常数过大,无法通过本题. 考虑分治.对于分治区间[l,r],可以记录pre和nxt表示其前/后一次出 ...

  6. 数学之美_正态分布(Python代码)

    1 在概率统计中,我们针对某个事件当中各个样本发生的概率的频率进行统计,用一个函数的形式写出的这个概率的频率函数就叫做分布函数. 2 分布函数顾名思义,就是某个连续事件发生频率的汇总表示.再直白一点儿 ...

  7. jquery预加载的几种例子

    实际编写前端页面时,有时候希望一打开某个页面就加载一些方法.下面是4种预加载方法. ①页面加载完之前执行,与嵌入的js加载方式一样(写jquery插件的时候使用) (function ($) { al ...

  8. 关于XML的一些总结

    xml的知识结构图 eXtensible Markup Language,可扩展标记语言,简称XML,和HTML比较而言,语法相似,作用不同 XML被设计用来存储和传输数据,但存储数据方面,数据库是主 ...

  9. usb转串口驱动安装失败

    方法一:通过驱动精灵安装 方法二:手动下载后安装,下载地址如下http://www.wch.cn/download/CH341SER_EXE.html https://blog.csdn.net/ja ...

  10. 使用VMware vSphere Client管理ESXI(新建虚拟机)

    1.下载vSphere Client客户端 2.将镜像文件(ISO)上传到ESXI主机,具体操作见如下链接地址 https://blog.csdn.net/amandazhouzhou/article ...