개발 Dev/통합개발도구 IDE

파이참 원격 개발 기능으로 서버 접속해서 파이썬 파일 실행과 디버깅 하는 방법

Tap to restart 2023. 8. 10. 17:00

원격 개발Remote Development이 필요한 상황

백엔드 개발의 경우 개발할 때 로컬에서 주로 개발하므로 원격 개발이 그리 많이 필요하지 않다. 하지만 인공지능 개발을 하다보면 원격 개발 기능을 자주 사용하게 된다. 로컬 컴퓨터에 GPU 성능이 좋지 않아 딥러닝 코드를 실행시키는 것조차 어려운 경우가 많기 때문이다. 그래서 본인 노트북에서 고성능 GPU가 달린 컴퓨터로 접속해서 원격 개발하는 경우가 많다.

 

파이참PyCharm 원격 개발Remote Development

파이참PyCharm을 실행하면 아래와 같은 화면이 나온다. 아쉽지만 원격 개발은 PyCharm Pro만 지원이 된다.

 

 

Remote Development를 누르고 SSH를 누르자.

 

SSH 접속 화면이다.

 

접속 방법

로컬 서버 예

같은 네트워크 상 다른 서버라면 아래 예처럼 입력하자.

SSH 접속하듯, Username, Host, Port를 입력하면 된다.

 

EC2 예

EC2라면 아래 예처럼 입력하자. host와 Port에 본인 원격 서버의 IP 주소 또는 도메인과 Port를 입력하자. AWS EC2 접속 시 pem 키를 사용했기 때문에 private key 경로를 추가했다.

 

와우 4GB 이상 메모리가 필요하다고 나온다. 

 

Project directory를 선택할 차례다.

 

EC2 기본 계정이 ubuntu라 /home/ubuntu로 정했다. 원하는대로 선택하면 된다. Download IDE and Connect를 누르자.

 

JetBrains Clinet 프로그램이 다운로드 된다.

 

JetBrains 프로그램은 java 기반이라 remote IDE 설치 중 .java 디렉터리가 추가된 것을 확인할 수 있다.

 

ec2 중 제일 저렴한 t2.nano에서는 실패했다. 메모리가 부족해서 그런 거 같다. t2.medium 정도로 하니 많이 느리지만 접속에 성공했다. 하지만 Resources critical 표시가 뜨고 굉장히 느리다.

 

다음부터는 아래 목록을 눌러서 접속하면 된다.

 

 

실행Run 예

로컬 AI 서버에 접속 성공한 화면이다.

 

 

간단히 main.py란 파이썬 파일을 만들어 보자. 아래 화면처럼 PyCharm의 자동완성 기능도 작동하고 있는 것을 볼 수 있다.

 

PyCharm에서 제공해주는 Run, Debug를 사용하려면 로컬에서 하듯 Interpreter 설정부터 해야 한다. 

JetBrains Client > Settings > Project: ... > Python Interpreter를 누르자.

 

Add Local Interpreter를 선택하자. 여기서 Local은 원격 접속한 서버를 뜻한다.

 

내 경우 아래처럼 새로 만들기 위해서 New를 경로도 설정했다. OK를 누르자.

 

아래처럼 설정이 완료된 것을 확인할 수 있다.

 

이 상태에서 Run 실행 버튼을 누르면 아래처럼 결과가 나온다!

 

 

디버깅 예

message란 변수 하나를 추가하고 print 옆에 중지점break point를 하나 찍자. 그리고 실행 버튼 옆에 벌레 버튼을 누르면 디버깅을 할 수 있다. Debug 버튼을 누르자.

 

파란색 음영이 생긴 것을 볼 수 있고, Debugger를 눌러보면 message 변수에 'hello world'가 담겨 있는 것을 확인할 수 있다.

 

PyCharm과 똑같이 Edit Configuration이 있다. 

 

여기서 실행 설정을 변경할 수 있다. 설정 화면에 들어가면 아래처럼 나온다. 

 

 

script는 실행할 파이썬 파일을 말한다. 만약에 인자argument를 덧붙여서 실행하고 싶다면 어떻게 해야 할까? Modify options를 눌러서 Parameter를 선택하면 된다. 파라미터로 test를 추가하자.

 

이제 디버깅을 해보면 sys.argv 정보로 ['/home/dev/playground/main.py', 'test']라고 찍히는 것을 확인할 수 있다.

 

 

VSCode와 비교

아직 베타Beta라 그럴 수도 있겠지만 원격 개발에서는 PyCharm이 많이 모자란 거 같다. 반응 속도가 느리다.