我的需求是用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执行比较多的话,那就对用到相对路径的部分进行相应修改。
本来以为是玄学问题,后来发现还是有科学依据的~
对解决这个问题提供一个角度,一家之言,供大家参考~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)