如何强制PyCharm的SSH Python解释器调用本地源文件执行远程运算
解决方案
方案1:SSH反向挂载本地目录到服务器(最适配当前场景)
- 先做本地端口反向映射(适用于本地机器处于内网、服务器无法直接SSH访问本地的情况),在本地终端执行:
ssh -R 2222:localhost:22 服务器用户名@服务器IP
执行后保持终端会话不要关闭,即可将本地SSH的22端口映射到服务器的2222端口 - 服务器端安装sshfs工具:
Debian/Ubuntu系系统执行:sudo apt install sshfs
CentOS/RHEL系系统执行:sudo yum install fuse-sshfs - 服务器端创建挂载目录:
mkdir -p ~/local_satellite_data - 服务器端执行挂载命令,将本地数据目录映射到服务器:
sshfs -p 2222 本地系统用户名@localhost:/本地卫星数据存放的绝对路径 ~/local_satellite_data - 挂载完成后服务器访问
~/local_satellite_data就等于直接访问本地源数据目录,读写操作都走SSH隧道,不需要提前传输全量20GB数据。使用完成后取消挂载执行:fusermount -u ~/local_satellite_data - 运行代码时,将代码里的数据源路径替换为服务器上的挂载路径即可,生成的12GB结果文件也可以直接写入挂载路径,自动同步回本地,不需要事后单独传输
方案2:配合PyCharm路径映射不修改代码运行
如果不想改动原有代码里的文件路径,可以配置PyCharm的自动路径转换规则:
- 打开PyCharm
设置 > 项目: 你的项目名称 > Python解释器,找到已配置的SSH远程解释器 - 点击解释器右侧的齿轮图标,选择
显示所有,选中目标SSH解释器后点击顶部的路径映射按钮 - 添加映射规则:本地路径填原代码中读取的本地数据文件夹绝对路径,远程路径填服务器上的挂载路径
~/local_satellite_data - 配置完成后直接运行原有代码即可,PyCharm会自动完成路径转换,不需要修改代码内容
方案3:无服务器sudo权限的替代方案
如果没有服务器root权限无法安装sshfs,可以用用户级工具rclone实现同样效果:
- 本地下载对应系统的rclone单文件二进制包,上传到服务器用户目录,执行
chmod +x rclone赋予执行权限 - 本地终端启动rclone的sftp服务:
rclone serve sftp /本地数据路径 --addr :2222 --user test_user --pass test_pass - 服务器端执行挂载命令:
./rclone mount :sftp,host=localhost,port=2222,user=test_user,pass=$(./rclone obscure test_pass):/ ~/local_satellite_data --daemon
性能优化提示
- 数据是按需传输,仅会传输代码实际读取的片段,只要不是全量随机遍历整个数据集,总传输量远小于20GB,耗时远低于10小时
- 上行带宽较低时可以在挂载时添加压缩参数降低传输量:
sshfs -p 2222 -o Compression=yes 本地用户名@localhost:/本地路径 ~/local_satellite_data
内容的提问来源于stack exchange,提问作者CaipiDE
相关产品推荐
相关产品推荐

