vscode 使用终端和交互式窗口ipykernel时的差异

vscode 使用终端和交互式窗口运行提示的差异。
文件夹的分布是这样的

img

在main程序中如果将“father”文件夹的路径表示为
file = "movement/father"

在vscode中使用终端就可以运行成功,但是使用vscode的交互式窗口就运行失败,如图

img

但是,如果在main程序中如果将“father”文件夹的路径表示为
file = "father"

在vscode中使用交互式窗口就可以运行成功,但是终端就运行失败,如图

img


并且,两种情况下提示的错误都是“系统找不到指定的路径”,请问这是什么情况导致的啊

工作目录不一样,终端是在 python 文件夹,iPython 是在文件同一目录下

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    首先,我们需要了解在vscode中运行Python程序时文件夹路径的表示方法。在vscode的终端中,路径表示方式为以“/”作为分隔符的绝对路径或相对路径;而在交互式窗口ipykernel中,路径表示方式为以“\”作为分隔符的绝对路径或相对路径。所以我们需要针对这个差异来解决问题。

    解决方法如下:

    1. 使用os库中的path模块,以避免在不同平台中路径分隔符的差异。具体操作如下:
    import os
    
    file_path = os.path.join("father", "file_name")
    

    这样可以自动适应不同平台上的路径表示方式。

    1. 在vscode中运行程序时,使用相对路径表示法,即“father/file_name”;而在交互式窗口ipykernel中,则需要使用绝对路径表示法。

    在程序中加入以下代码可以自动判断当前运行环境:

    import os
    
    if os.environ.get('TERM_PROGRAM') == 'vscode':
        file_path = os.path.join("father", "file_name")
    else:
        file_path = "/disk_name/father/file_name"
    

    该代码会首先判断当前是否运行于vscode环境中,若是,则使用相对路径表示法;否则使用绝对路径表示法。

    以上两个方法都是较为通用的解决方案,可以解决vscode终端与ipykernel环境下路径表示的差异问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^