PyCharm + WSL 2로 개발하기

eunwoo1104·2023년 4월 29일
0

개발 환경

목록 보기
1/1
post-thumbnail

Velog에 올리는 첫 글이라 아직은 조금 미숙할 수도 있습니다.. 양해 부탁드립니다...!

컴퓨터의 SSD를 교체하면서 OS도 새로 갈아엎었는데, 기존에는 Windows 11(게임용) + Ubuntu 22.04(개발용)으로 듀얼 부팅해 사용하고 있었다.
그런데 OS를 번갈아 사용하니 불편함이 더 큰 것 같아 어차피 WSL 2도 있는데 이걸 활용해보면 어떨까 싶어서 시도를 해보았다.

설정

Windows

일단 WSL 2부터 설치한다.

wsl --install

Ubuntu

이제 WSL 2에 설치된 Ubuntu로 가서 파이썬을 설치한다.

sudo apt update  # upgrade까지 해주는것도 좋습니다
sudo apt install python3 python3-dev python3-pip  # 원하는 버전으로 바꿔도 괜찮습니다 (python3.10 등)

PyCharm

여기서는 기존 프로젝트에 설정하는 기준으로 작성한다.


On WSL...을 누르면 알아서 자기가 Ubuntu에 구성된 설정을 확인해준다.

이후 적절히 원하는 환경으로 설정해준다.

그러면 이렇게 잘 설정이 된다!

Apply를 누르면 적용이 되고 일단 잘 돌아가는 것으로 보인다.

import platform
print(platform.platform())

이후 터미널까지 WSL 환경으로 쓰고 싶다면 다음과 같이 설정해준다.

System32 폴더에 위치한 wsl.exe를 사용하도록 바꿔준다.

그런데...

분명히 전에는 파이참 내에서 터미널을 열었을 때 자동으로 venv를 같이 불러왔던 것 같은데, 시도해보면 venv를 가져오지를 못한다. 심지어 위에서 Activate virtualenv 항목을 체크했는데도 말이다.

느낌상 프로젝트 디렉토리가 아닌 Ubuntu 영역에 따로 venv가 설정돼있어 불러오지 못하는 것 같았다. 물론 그냥 venv를 다시 프로젝트 디렉토리 내에 만들면 해결되긴 하겠지만 그냥 여러가지 이유로 귀찮았다. 아니면 터미널을 쓸 때 마다 source /home/<username>/.virtualenvs/<projectname>/bin/activate를 쳐도 되지만, 역시나 귀찮다. 그러면 그냥 이걸 알아서 입력하게 만들면 될 것 같은데... 아무리 찾아봐도 파이참 내에서는 따로 설정할 수 없는 것 같았다.
그래서 1시간동안 bash에 대해 Stack Overflow를 검색하고 공부한 후 우분투의 .bashrc 파일을 수정해 파이참 환경을 감지하면 알아서 위의 스크립트를 실행하게 만들었다. 일단 코드는 다음과 같다.

# check if opening dir is PyCharm project folder and venv exists
IFS='/' read -ra ADDR <<< "$PWD"
if [ "${ADDR[-2]}" = "PycharmProjects" -a -r /home/<username>/.virtualenvs/${ADDR[-1]} ]; then
    # try using venv if exists
    source /home/<username>/.virtualenvs/${ADDR[-1]}/bin/activate
fi

대략적으로 설명하자면 켜질 때의 PWD 환경변수를 불러와 파이참 프로젝트 영역에서 실행했는지 확인하고 그 프로젝트의 이름으로 venv가 생성돼있는지도 확인한 후, 맞다면 venv를 불러오도록 했다.

이제 이 스크립트를 .bashrc에 넣고 다시 터미널을 열어보면 알아서 잘 잡힌다.

결론

아직 제대로 사용해보진 않아서 느낌은 잘 모르겠으나, 최소한 전에 우분투를 통해 개발한 환경이랑 비슷하게 구성할 수 있으니 편리하게 사용할 수 있을 것 같다.
앞으로 WebStorm이나 CLion도 WSL 2를 사용하도록 설정해보는 시도를 해봐야 될 것 같다. (원래 개발에 리눅스를 쓴 것도 웹 개발쪽 때문인 만큼... 우선 파이참으로 잘 되나 테스트해본 것이긴 하다.)

profile
새로운 시도를 계속 하고자 하는 학생 개발자입니다.

0개의 댓글