VS Code中getcwd(),调试和命令行运行的结果不一致

博主在使用Python调用C++编译的动态链接库时遇到路径问题,发现通过VSCode运行Python文件与命令行方式得到的当前工作路径不同,导致结果不一致。问题源于VSCode运行Python文件时,当前路径是VSCode的默认目录,而非文件所在目录。解决方案是将源代码中的相对路径改为绝对路径或在VSCode环境下调整路径。博客强调了理解执行环境对于程序行为的重要性。
摘要由CSDN通过智能技术生成

问题描述:

我的需求是用Python调用C++,采用方式是把C++编译成一个动态链接库,再用Python调用,C++代码中存在getcwd()函数,获取当前的工作路径,再根据这个进行相对路径的编码,完成后续的工作。

在完成以上工作后,发现如果我使用命令行完成调用Python,是可以的,但是在VS Code中右下角选择想使用的Python解释器后,直接选择"Run Python File",发现执行结果与命令行的结果不一致。

原因解释:

按理说VS Code中用的terminal就等价于我用的终端,所以我就看里面执行的内容,我看到当我在VS Code中选择"Run Python File"后,terminal中显示了以下两行命令:

可以看到实际上就是用之前选择的路径下的python执行当前选中的.py文件,但是当前路径仍然是在VS Code打开的文件夹这个默认目录下的。

而我用命令行的时候,一般习惯是到了想执行的.py文件所在的文件夹下之后,再执行

conda activate XXX
python X.py

这样,那么当前执行目录自然就是这个.py文件所在的目录了。

为了检验我的想法的正确性,我在链接库对应的源代码中增加了输出路径的代码,结果如下:

命令行中的结果为:

 VS Code中的结果为:

可以看到我的想法是正确的。

解决方案:

很遗憾,我暂时没找到好的解决方案,就只能把源代码中的相对路径部分硬编码为绝对路径了,或者如果用VS Code执行比较多的话,那就对用到相对路径的部分进行相应修改。

感想:

本来以为是玄学问题,后来发现还是有科学依据的~

对解决这个问题提供一个角度,一家之言,供大家参考~ 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值