ROS를 사용할 때 대부분 vscode에서 코드를 작성하기는 했지만 실행은 대부분 terminal에서 사용을 하다보니 문제가 없었는데
정작 vscode에서 실행을 하다보면 연관된 파일들의 경로를 잘 못찾는 경우가 많았다.
특히 docker 환경을 쓰게되면 더더욱 경로가 꼬이는 경우가 많았고 실행을 하면 파일이 없다고 자꾸 말한다.(젠장)
초반에 뭐가 잘못되어있는지 잘 몰라서 엄청 헤맸던 기억이 난다.
vscode가 어떻게 동작하는지 알면 쉽게 해결된다.
예를 들어 위와 같이 폴더 및 파일을 구성했다고 해보자.
Desktop / folder_1 / folder_1_1 / test_1_1.py
로 구성을 했고 test_1_1.py 파일을 실행한다고 해보자.
그리고 현재 경로를 확인하기 위해 os.getcwd() 를 출력하면 다음과 같다.
https://barrer.tistory.com/66
현재 실행하고 있는 파일의 경로는 /home/eddy/Desktop/folder_1/folder_1_1/test_1_1.py 인데 정작 현재 경로를 출력해보니
/home/eddy/Desktop 가 나온다. (당황)
이는 vscode에서 처음 폴더를 열었을 경우 그때의 최상위 폴더 기준으로 설정되기 때문이다.
이를 위해서 우측에 Run and Debug 를 설정해주면 된다. 삼각형과 벌레 모양이 있는 아이콘을 클릭하면 다음과 같이 나온다.
여기서 create a launch.json file 이라고 적힌 글자를 클릭하면 다음과 같은 선택창이 열린다.
Debug Configuration 이라고 나오면 Python File 을 선택한다.
그러면 다음과 같은 launch.json 파일이 열린다.
여기에 다음과 같은 코드를 추가한다.
"cwd": "${fileDirname}"
윗 줄에 콤마 빼먹지 말 것!
이렇게 수정을 한 다음 저장을 하고 아까의 파일을 다시 실행해보자.
기존에는 현재 경로를 os.getcwd()를 이용해 출력했을 때
/home/eddy/Desktop 라고 나왔다면, launch.json 파일을 수정했더니
/home/eddy/Desktop/folder_1/folder_1_1 와 같이 실제 파일이 있는 경로로 수정된 것을 볼 수 있다.
별것 아닌데 모르면 정말 고통스러운 부분이다!