0. 问题描述
习惯了windows可视化界面的码农们将pycharm视为python编程的一大神器IDE。要是能将本地代码和远程服务器代码进行同步,在本地修改代码实时同步到服务器上,再使用服务器的python interpreter和服务器计算资源跑程序,岂不爽哉。
这不pycharm也确实有对应功能,可以通过设置ssh interpreter + deployment的path mapping来实现。
按着教程配置,有时候挺顺利,有时候却遇到No such file or directory的问题,查看deployment里的path mapping也是对的,代码也实时同步到了服务器上,可是只要在pycharm IDE里Run就是会出现No such file or directory的问题。怎么办呢?本文带你解决!!!
0.1. 设置的“看似正确的,毫无破绽的”deploy mappings
注意本文中【 /work/Users】开头的地址就代表是服务器上的; 【/D:/】开头的是本地的

0.2. 但是一跑程序就报错

仔细观察上图发现虽然python interpreter是远程的,但是执行的却是/tmp/aamPnVhuRP/这是什么?这是服务器上的临时文件夹,里面是空的。不是我们设置好的服务器上的目标位置。
打开Python Console也注意到,sys.path.extend里面的地址也是/tmp/xxxxxxx/

那看来关键问题就是怎么把mapping不对应到/tmp/xxxxxx,真的对应到我们deployment设置的目标文件夹。
1. 易错配置
1.1. File —> settings —> Python interpreter 设置ssh interpreter,以为成功大半

1.1.1. Add interpreter小风险
如果这里你选择的add interpreter那么恭喜你,你应该大概率不会出现 No such file or directory的问题。
前提是你在第3步的时候正确设置了同步文件夹 Sync folders。下图是对应本文项目的正确设置。

但是,如果你忽略了设置 Sync folders,你会发现mapping的是/tmp/xxxxxx那么不可避免就会出现 No such file or directory的问题。

1.1.2 选择已有的ssh interpreter很大风险
我们很多时候在以前的项目中已经添加过了服务器上的ssh interpreter环境,而且当前这个新项目的代码可以复用那个环境,那很直接我们会倾向于选择已有的ssh interpreter。但这种方式很容易出现 No such file or directory的问题。
1.2. Tools —> Deployment --> Configuration —> Mappings设置完成,心中窃喜


1.3. Run file报错No such file or directory苦恼不已

2. 正确配置
其实问题的关键就是path mapping那里。
网上搜此问题,大多摸棱两可,或者方法只适用于老版本2021年以前的pycharm。
一篇StackFlow上回答的还算好的pycharm ssh interpter No such file or directory
2.1. 2021年以前的pycharm下方设置,简单解决

2.2. 2022年以后的pycharm
2.2.1. 笨办法 Run —> Edit Configurations为每个文件配置Path mapping
这样的配置只是对每个文件单独生效的,无法为项目所有文件同时生效

2.2.2. 根本办法
关键就是选择了已有的ssh interpreter后,Deployment里的sftp服务器一定要选择当前的ssh interpreter第一次Add时加入的那个服务器
下面举个例子:
首先ssh interperter选择了【126-pc】

那么Deployment里的sftp服务器也要选择【126-pc】

建议大家Add ssh interpreter之后,就立马到Deploment里面将对应的sftp服务器rename为相同的名字,方便一一对应。
最后,如果还是存在mapping不能从/tmp/xxxx改到目标地址的情况,把project里的.idea文件夹删除重新按正确配置配一遍!!!


本文详细介绍了在PyCharm中使用SSH Interpreter时遇到的'No such file or directory'错误的原因及解决方法。通过正确设置Deployment的Path Mapping,避免将Python Interpreter映射到临时文件夹,确保代码同步和执行在同一路径下,从而解决该问题。

1478

被折叠的 条评论
为什么被折叠?



