Pycharm 连接远程服务器
speedup奔跑的蜗牛 人气:0环境说明:本人pycharm是2021.3.3,其它版本设置界面可能略有差别
使用的是企业版,不知道社区版是否支持(据了解可能不支持)
1 设置链接的账号密码:
依次点击 File--》Settings--》Tools--》SSH Configurations 。
在界面中依次输入
host :远程服务器地址
port :协议端口号
user name:用户名
password :密码
然后点击ok保存。
2.1 终端界面连接服务器:
如下图所示,依次点击Terminal--》下拉菜单,选择要连接服务器(上个部署已经设置好的SSH账号密码会在此处显示),即可进入远程服务器的bash界面。
或者依次点击Tools--》Start SSH Session--》选择要连接的服务器,进入到远程服务器的终端界面。
在此界面可以执行linux的各种命令。
2.2 使用pycharm查看linux服务器上的各种文件,并且使用pycharm编辑器界面直接修改和保存代码。
依次点击Tools--》Deployment--》Configuration,出现如图所示的配置界面。
箭头1是在步骤1中设置的ssh连接账号密码,如果在步骤1中未设置,点击箭头2的加号也可以设置ssh连接账号密码。
Type:连接的协议,此处选择SFTP(文件传输协议,此协议支持文件的上传和下载)
SSH configuration: 选择ssh连接的账号密码
Root path:选择要显示远程服务器的文件的路径,“/”表示显示远程服务器的根路径。
注意:Visible only for this project 这个不要勾选。
设置完成后,依次选择Tools--》development--》Browse Remote Host,会出现如下图所示的显示服务器文件的列表。
在箭头处的下拉按钮选择在configuration中设置的连接选项,可以选择连接不同的服务器。这样可以像pycharm修改本地代码一样对远程linux服务器进行修改和保存。到此为止这种方式只能对远程服务器的代码进行编辑和修改,并不能运行或者debug调试代码。
备注:他这个修改远程linux服务器代码的背后逻辑(真实执行过程)其实也是将远程服务器下的代码下载、暂时缓存到本地,在本地修改好了之后再上传到远程服务器,从而实现对其修改的目的。
3 使用pycharm连接远程服务器,使用远程服务器环境,实现代码在本地的运行、调试
思考:pycharm能在本地执行代码是因为pychram能读取本地的运行环境,想要执行在远程服务器的代码就需要:
(1)连接到远程服务器
(2)并且能够准确找到远程服务器的环境位置,从而使用此环境来编译执行本地代码。
这样就不需要本地也安装和远程服务器一样的环境,使用远程服务器的环境,在本地来运行、调试代码。
具体步骤:
3.1 配置连接:
依次点击Tools--》Deployment--》Configuration,出现如图所示的配置界面。
具体参数和配置参考2.2。
3.2 配置映射关系
点击Mappings,界面如下所示:
Local path:本地项目所在目录。
Deployment path on server:远程服务器上项目所在目录。这里的目录是相对于上一步设置的Root path而言的,它和Root path 路径共同拼接成项目的具体路径。如图上两图所示。
项目的绝对路径为: /home/serverai/lee/nomal_test
3.3 同步代码
点击 Tools(工具),点击 部署Deployment(部署)
如果是想要将本地的代码同步到远程服务器,点击Upload to xxx
如果是想从远程服务器拉代码,则点击Download from xxxx(xxxx是远程主机的名称)
如果勾选了Automatic Upload (always),那么,你在本地修改了代码,pycharm会自动将代码同步到远程服务器上(还是手动同步靠谱)
3.4 配置远程解释器作为运行环境
(1)点击左上角 Files--》Settings ,点击Project Interpreter,点击Add。
(2) 选择SSH Interpreter,选择Existing server configuration,选择远程服务器
(3) 配置Python解释器所在路径,找到远程服务器环境的路径,粘贴到此处。
3.5 在打开本地代码,进行运行调试!!!!
(打开远程服务器代码后运行调试会报错[Errno 2] No such file or directory)。
上两张图:
我本地的环境中根本没装pytorch,也没有gpu。以上证明调用远端服务器程序调试本地代码功能完成。
写在最后的测试小tip
在本地执行代码,相当于在本地和远程同时执行了代码(远程路径为3.2中mapping页面Deployment path 所标记的地址)。如果有文件写入,写入的最后结果在远程服务器上,而不是在电脑上。如果有引入,也是按照远程服务器的路径引入的。
加载全部内容