本文详细介绍了如何在Pycharm中配置SSH和SFTP,以便于在AOTUDL服务器上进行代码修改、调试。步骤包括新建工程、配置SFTP连接、设置Rootpath和Mapping,以及实现自动上传和下载文件的功能。远程服务器编辑调试只是试用于专业版本的pycharm,我的PyCharm版本是PyCharm 2024.1.3 (Professional Edition)。
警告:如果使用PyCharm直接执行或开终端执行训练程序,请在调试完成后最后通过tmux工具开守护进程(参考文档:守护进程),确保程序不受SSH连接中断影响程序执行!
一、配置SFTP。
1. 首先新建立个工程。点击pycharm左上方File选项,然后点击New Project...新建个工程。
在新建工程的页面,进行如下图的选择。选择Pure Python类型,填写的新建项目的名字及保存地址。关于interpreter先不用管,后续会选用AutoDL的云服务器conda env下的python interpreter。
2. 配置PyCharm SSH
点击左上角的PyCharm图标 -> [Settings..]菜单,打开以下设置弹窗,选择Project:Streamer-Sales 点击 [Python interpreter] 设置项,弹出如下窗口:
点击Add Interpreter,选择On SSH并点击 (PyCharm社区版本无该选项):
其中Host,Username, Port在AutoDL中的SSH登陆指令下复制即可:(Username均为root,Host和Port查看自己实例的SSH指令)
下一步:输入SSH的密码(复制上图中的SSH登陆指令中的密码)
继续下一步,直到看到下面的弹窗。选择System Interpreter,配置远程Python解释器地址为/root/miniconda3/envs/streamer-sales/bin/python
(如果您在miniconda中安装了其他的虚拟环境,那么虚拟环境的python解释器路径在/root/miniconda3/envs/{对应的虚拟环境名称}/bin/python)
配置同步目录,意思是本地项目和远程实例中的哪个目录进行关联,这里设置为实例的数据盘子目录:/root/Streamer-sales
点击创建,如果配置均无误PyCharm会有小会配置过程,完成后即可远程开发。
配置好PyCharm远程开发后,可以在PyCharm的终端中下拉找到远程服务器打开远程终端:
3. 配置SFTP
在导航栏部分找到Tools→Deployment→Configuration进行配置:
由于前面已经配置了PyCharm SSH,所有左边已经有了一个服务器,给服务器改一个名字,如AutoDL_server。
3.1 配置Connection
点击“Test Connection”按钮,在弹出的对话框中显示了Successfully connected to connect.nma1.seetacloud.com。
接下来需要配置Root path,因为我的代码是放在aotudl中的系统盘/root/Streamer-Sales中,所以这样配置,我选择了Use Rsync for download/upload/sync。
3.2 配置Mappings
这部分的用处是将我们本地的文件夹和服务器上的项目文件夹联系映射起来。Local Path默认是项目文件夹所要存储在本地的目录地址及文件夹。Deployment path的这个地方要填入的是我们的项目在服务器上的文件夹,而这里要注意的是要填入相对于Root Path的路径,而不是绝对路径。
最后点击OK.
这时我们可以在导航栏找到Tools→Deployment→Browse Remote Host。
这时则需要我点击上图所示None旁边的下滑菜单,选中我们刚刚命名的AutoDL_server。出现以下界面:
在导航栏找到Tools→Deployment→Download from AutoDL_server,随后我们可以在左侧菜单栏就可以看到我们已经将服务器上的项目下载到本地中。
这个时候我们可以对其进行编辑,在导航栏找到Tools→Deployment→Automatic Upload,打开,这时候我们对文件的更改就会自动上传到服务器上。
然后双击选中要调试的文件夹,就可以进行调试运行了,当然也可以用命令行去运行程序。
二、在PyCharm中远程调试AutoDL上的程序
在 PyCharm 中,进行远程调试云服务器(例如 AutoDL 算力云)上的 Python 程序,可以通过配置远程 Python Debug Server 实现。这种方式允许你在本地的 PyCharm 中调试运行在远程服务器上的代码。
1. 在 PyCharm 中配置 Debug Server
-
创建 Debug Server 配置:
- 打开
Run
菜单,选择Edit Configurations...
。 - 点击左上角的
+
,选择Python Debug Server
。 - 设置名称,例如
Remote AutoDL Streamer-Sales
。
- 打开
-
设置 Debug 端口:
- 在
Port
字段中,设置一个你希望 PyCharm 本地监听的端口,例如5678
。确保该端口没有被其他程序占用。 - 如果你不确定端口号,可以选择任意一个空闲的端口。
- 在
-
启动 Debug Server:
- 配置完成后,点击 Apply 保存,然后点击 OK。
- 选择你刚创建的配置,点击运行按钮旁边的 Debug 按钮,启动本地的 Debug Server。
- PyCharm 会显示 "Waiting for incoming connection on port 5678"。
2. 在远程服务器上设置 Python 脚本
2.1 安装 pydevd-pycharm
包:
在你的云服务器上,通过 pip
安装 PyCharm 远程调试所需的 Python 库:
pip install pydevd-pycharm~=debugger-compatible-version
替换 debugger-compatible-version
为 PyCharm 版本所支持的调试器版本。例如,PyCharm 2024.1支持的版本应为 pydevd-pycharm~=232.0
2.2 修改远程 Python 脚本:
在你想要调试的 Python 脚本中,添加如下代码,确保你可以通过远程服务器连接到本地 PyCharm 的 Debug Server:
import pydevd_pycharm
# 替换为你的本地主机 IP 和 PyCharm 设置的调试端口
pydevd_pycharm.settrace('YOUR_LOCAL_IP', port=5678, stdoutToServer=True, stderrToServer=True, suspend=False)
-
YOUR_LOCAL_IP
: 是你的本机 IP 地址,确保云服务器可以访问此 IP。如果你使用 NAT 或 VPN,请确保远程服务器能通过网络访问你的本地机。 -
port=5678
: 是你在 PyCharm 中配置的 Debug Server 监听的端口号(例如 5678)。
2.3 运行远程脚本:
在云服务器上通过 SSH 运行你修改后的 Python 脚本。此时,远程程序会尝试连接本地的 PyCharm Debug Server。
python your_script.py
如果一切配置正确,远程 Python 程序会通过网络连接到你本地 PyCharm,进入调试模式。
2.4 设置断点并调试
在 PyCharm 中打开你的项目代码,设置断点。
当远程脚本运行时,它会触发断点,PyCharm 将进入调试模式,允许你在本地调试远程执行的代码。
本文参考文档:
Pycharm通过SSH、SFTP连接远程服务器_pycharm sftp-CSDN博客
AutoDL帮助文档:PyCharm远程开发