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