1. 确保已经安装并enable如下插件:SSH Remote Run, Vagrant, Docker Integration。
操作如下:File -> Settings -> Plugins -> Installed
2. 总共有四种远程解释器配置方式,此处选择使用SSH的配置。其它三种配置见https://www.jetbrains.com/help/idea/configuring-remote-python-sdks.html
Tools -> Deployment -> Configuration
+ -> SFTP -> New server name (此处名字可以任意填写,本人填写为‘gll’)
3. 配置connection
- Type: SFTP (默认)
- Host: 远程服务器的IP地址或者域名
- username: 登录服务器时的用户名
- password: 登录服务器时的密码
- Root Path: 在服务器上的根目录(例如:/home/gaoll)
- Web Server URL: 可以不用填写,会自动生成
- 点击“Test Connection”,得到下图
4. 配置Mappings
- Local path: project的本地路径
- Deployment path: project的远程服务器路径
(此处需要注意的是:Local path是绝对路径,Deployment path是相对于上步Root path的路径)
5. 配置同步文件的方式
Tools-> Deployment -> Configuration -> Options,其中有三种选择,通常选择中间项
此时,Tools-> Deployment -> Automatic Upload 会显示选择的上传方式
6. Tools->start ssh session可以使用ssh
7. 若Pycharm仍没有成功连接到远程服务器,则进行如下操作:
- File-> Setting ->
Project: PROJECT_NAME
->Project Interpreter
->SSH Interpreter
- 检测Project Interpreter的下拉列表,若存在远程服务器所用的python解释器,选择此解释器;否则,点击下拉表后面的'设置' -> 'Add', 添加新的远程解释器:
- Add操作:若存在服务器配置选择下面的'Existing server configuration',否则选择上面 'New server configuration' (本人选择下面选项,第一步建立的Server name为gll)。然后点击'Next'
- 接下来,选择Interpreter的路径时,需要首先确定在远程服务器中使用的Python解释器。一般服务器上会安装至少两个版本的Python,查看自己账号下python脚本运行时使用的python解释器,并选择此python解释器所在的路径为Interpreter的路径。
我们可以通过两个命令来查看服务器安装多少个Python解释器以及我们自己使用的是哪个Python解释器: - whereis python:查看服务器安装的所有Python解释器的路径
- which python:显示我们自己使用的Python解释器路径 (此为Interpreter的路径)
PS:若修改本地codes,按Ctrl+S未同步到服务器时,需要重新查看下?Tools->Deployment->Configure下的Connection与Mappings是否被篡改。
PS:若经过上述检测仍未同步成功,检测是否将设置的configuration设置为默认。若没有正确设置默认configuration,可在Deployment窗口下点击“configuration 名称”与“对勾”来切换不同的默认配置
PS:若在本地新建一个文件(夹),需要首先手动Upload to远程服务器,之后可使用“Ctrl+S”进行快捷修改保存
PS:若同步仍未成功,可以尝试Tool -> Deployment -> Up to,或者右击文件,点击“Deployment-->Upload to ...”,手动选择上传的服务器
参考: https://www.jianshu.com/p/5f0b885c67e4
https://jingyan.baidu.com/article/da1091fb6cb6bc027849d6d8.html
https://www.jetbrains.com/help/idea/configuring-remote-python-sdks.html
http://blog.sciencenet.cn/home.php?mod=space&uid=1969089&do=blog&id=1191163
"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少