PyCharm 에서 원격 인터프리터 사용하기

Note: 원격 인터프리터(SSH Interpreter) 기능은 PyCharm 의 여러 에디션 중 Professional edition 에만 지원되는 기능입니다. 여러분이 사용하고 계신 PyCharm 에디션을 확인하시기 바랍니다. 본 포스트는 PyCharm 공식 문서의 Configure a remote interpreter using SSH 를 바탕으로 쓰여졌습니다.

원격 인터프리터, 어떤 경우에 필요할까?

연구실에서 연구 프로젝트를 진행할 때는 용량이 매우 큰 데이터(수 TB 이상)들을 다루는 일이 많고, 대규모 계산을 해야 하는 작업들이 잦다. 따라서 데이터를 저장해두는 일 뿐만 아니라 대규모 연산이 필요하므로 개인용 로컬 데스크탑 보다는 리눅스 클러스터 서버 시스템1에 직접 접속하여 파이썬 스크립트를 작성하고 실행한다. 초창기에는 체계적으로 파이썬 개발 환경을 구축하려는 생각을 하지 못하고 리눅스 서버에 있는 vim 과 같은 텍스트 에디터 정도로만 이용해서 서버에서 직접 스크립트들을 수정했는데, 프로젝트가 진행되면서 관리해야 할 파일들의 개수가 점점 늘어나면서 많이 복잡해졌다. 따라서 파이썬을 위한 개발 환경을 구축하여 체계적으로 관리해야 되겠다는 필요성을 많이 느꼈고, 여러 개발 환경들을 써본 결과 PyCharm 이 괜찮아서 지금까지도 잘 사용하고 있다. 사용하고 보니 개발 환경을 사용하지 않고 서버에서 직접 텍스트 에디터로만 개발해왔던 이전의 내가 너무 구석기 시대 사람처럼 느껴질 정도로 PyCharm 은 많은 편리함을 주고 있다.

파이썬을 사용하는 프로젝트에 대한 개발 환경으로 PyCharm 을 선택하게 된 배경 중 하나는 ‘원격 인터프리터 설정과 사용이 용이해서’ 였다. 다른 개발 환경들은 원격 인터프리터 기능을 플러그인으로 지원하기 때문에 기능 자체가 부족한 면이 많은데, PyCharm 은 파이썬을 위한 개발 환경인 만큼 기본적으로 지원하고 성능 또한 만족할 만한 수준이다. 단순히 파이썬을 배우려는 사람에게는 로컬 컴퓨터에서 모든 것을 해결해도 별 무리가 없을 것이다. 하지만 실제 프로젝트를 진행하는 사람에게는 원격 인터프리터가 필요할 수 있다. 혹시나 원격 인터프리터를 사용해야 하는지를 고민하는 사람들을 위해 내가 처했던 배경들과 개발 환경이 해주었으면 하는 기능들을 아래에 나열해 보았다.

위 항목들에 해당하는 것이 많다면, 원격 인터프리터 설정을 고려해 볼 만 하다.

파이썬 원격 인터프리터 추가 및 적용하기

Step 1. 원격 인터프리터 추가

PyCharm 에서 원격 파이썬 인터프리터를 설정하기 위해 현재 프로젝트의 환경 설정 Settings 로 들어간다. ‘Project Interpreter’를 선택하고, 프로젝트가 여러 개 열려 있다면 현재 프로젝트를 선택한다. 그리고 오른쪽에 ‘Project Interpreter’ 항목에 설정된 인터프리터가 없다면 ‘No interpreter’라고 떠있을 것이다. 이 부분을 바꿔 주면 된다. 이미 추가해 놓은 원격 인터프리터가 있다면 선택해주면 된다. 하지만 아무 것도 없다면 원격 서버에 설치되어 있는 파이썬 인터프리터를 PyCharm 에 추가하는 과정이 필요하다. 파이썬 원격 인터프린터 하나를 추가해 보자. 톱니바퀴 모양의 아이콘을 눌러 ‘Add’를 클릭하면 인터프리터를 추가하는 대화상자로 넘어간다.

image

Step 2. 원격 서버 정보 입력

SSH 접속을 통해 원격 인터프리터를 사용할 것이므로 ‘SSH Interpreter’를 클릭하고, 원격 서버 정보가 등록된 것이 기존에 있다면 기존의 것을 쓰면 되겠지만 처음 사용하는 사람은 대부분 등록을 해야 할 것이다. 따라서 ‘New server configuration’을 클릭한 뒤에 원격 서버의 호스트명(host)과 사용자명(username)을 적어주고 ‘Next’를 클릭하면 된다. 그러면 이제 PyCharm 은 원격 서버에 접속을 시도해 볼 것이다.

image

Step 3. 비밀번호 입력

원격 서버에 문제 없이 접속이 됐다면 아래와 같이 비밀번호를 입력하는 내용으로 바뀐다. 비밀번호를 입력한 후 ‘Next’를 눌러 다음 단계로 진행한다.

image

Step 4. 파이썬 인터프리터 경로 지정 및 동기화 설정

올바른 비밀번호를 입력하여 사용자 계정에 접속이 됐다면 상단에 ‘Connected to …’ 와 같은 메시지를 볼 수 있다. 자, 이제 서버에서 사용하던 파이썬 인터프리터의 경로를 지정해주는 단계이다. 나의 경우에는 아나콘다 배포판의 파이썬을 설치하였으며 별도로 ‘Sukjun’ 이라는 이름의 가상환경을 만들어 사용하고 있었다. 따라서 이에 대한 파이썬 바이너리 실행파일까지의 절대경로를 적어주었다.

여기서 또 중요한 부분은 로컬에 존재하는 스크립트와 원격 서버에 존재하는 스크립트의 동기화 설정이다. 실시간 동기화를 원한다면 동기화를 할 대상 폴더를 서로 매핑해주는 작업이 필요하다. ‘Sync folders’ 부분에 프로젝트 최상위 폴더를 원격 서버의 어느 경로에 매핑할 것인지를 설정하면 된다. 폴더 아이콘을 눌러 ‘Edit Sync Folders’ 대화상자에서 ‘Remote Path’에 원하는 경로를 입력한 뒤 OK 버튼을 눌러 설정한다. 그리고 ‘Automatically upload project files to the server’ 에 체크가 되어있는지를 한번 더 확인한다.

image

Step 5. 설정 완료 및 확인

자, 이제 원격 인터프리터가 이 프로젝트에 추가된 것을 아래 그림과 같이 확인할 수 있다. ‘No interpreter’ 라고 떠있던 부분이 ‘Remote Python 3.6.7 …’ 으로 바뀌어 있다. 그리고 아래 부분에 설치된 패키지 목록도 빼곡히 들어차 있는 것을 확인할 수 있을 것이다.

image

설정을 마치며

원격 인터프리터를 설정하고 로컬과 원격 서버에 스크립트 최신 복사본을 갖게 되므로 자연스럽게 백업이 되는 효과까지 누릴 수 있다는 추가적인 장점이 생긴다. 로컬 또는 원격 서버에 문제가 생겼을 때 언제든지 최신의 상태로 복구가 가능하다. 조금 더 백업을 철저히 하고 싶다면 GitHub 원격 저장소를 이용하면 3중 백업이 되므로 지구가 멸망하지 않는 한 작성한 소스코드를 잃어버리는 일은 생기지 않을 것이다.

  1. 리눅스 운영체제가 설치된 여러대의 컴퓨터들을 하나로 묶어 하나의 시스템처럼 동작하는 컴퓨터들의 집합. CPU 코어가 많은 한 대의 컴퓨터보다는 이런 클러스터를 구성하는 것이 가성비가 좋다. 주로 병렬 처리 연산을 목적으로 구성한다.