【python】【全网首发】详细解释原因并解决pycharm选择ssh interpreter但运行程序报错No such file or directory的问题

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

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文件夹删除重新按正确配置配一遍!!!

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星知微

能帮助到你是我最大的荣幸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>