Pycharm 에서 python interpreter 사용하기

Updated on

Ai를 공부하면서 python 을 사용하고 있는데 여기서 Pycharm 으로 해보고 있다.

근데 에디터에서의 문제가 있는데,

Nodejs의 경우 node_modules 이 있기 때문에 Interpreter 가 잘 연결되지만.

Python 은 생각보다 버전이 다르게 사용될 수 있다는 것. 2.7, 3.1

그리고 이 버전들마다 설치되는 패키지 버전들도 모두 다르다는 거다…

그래서 대부분의 개발자들이 pyenv를 설치해서 사용하게 된다.

근데 어찌되었든 나는 pyenv를 설치해서 복잡하게하는 것 보다는 Docker를 통해서 개발하고 싶어서 검색해보니 Python Interpreter 라는 것이 있었고 설치 과정을 공유 한다.

설치 및 환경설정

디렉토리

app
 - test.py
docker
 - python
   - Dockerfile (1)
 - .env => `COMPOSE_PROJECT_NAME=cat-study`
 - docker-compose.yml (2)
 - docker-compose-interpreter.yml (3)

으로 구성되어있다.

(1) docker > python > Dockerfile

FROM python:3.10-slim AS base

WORKDIR /app

FROM base AS dev

ENV PYTHONUNBUFFERED=1

CMD ["tail", "-f", "/dev/null"]

FROM base AS interpreter

ENTRYPOINT ["python"]

(2) docker > docker-compose.yml

services:
  python:
    image: python
    build:
      context: python/
      dockerfile: Dockerfile
      target: dev
    environment:
      - ENV=local
    labels:
      - "traefik.enable=false"
    volumes:
      - ../app:/app:delegated
      - python-packages:/usr/local/lib/python3.10/site-packages
    networks:
      frontend:
      backend:

volumes:
  python-packages:
    name: python-packages-cat-study

networks:
  frontend:
    external: true
  backend:
    external: true

(3) docker > docker-compose-interpreter.yml

services:
  python-interpreter:
    extends:
      file: docker-compose.yml
      service: python
    image: python-interpreter
    build:
      target: interpreter

volumes:
  python-packages:
    name: python-packages-cat-study
    external: true

networks:
  frontend:
    external: true
  backend:
    external: true

설명

dockerFile에 target 을 사용해서, dev 용, interpreter 용으로 분리 했다.

volumes Name 에 python-packages-cat-study 를 설정해서, 각 프로젝트 별로 interpreter 가 바라보는 python package Folder 를 분리시켰다.

dev, interpreter 용의 volume 이 같은 곳을 바라보기 때문에 dev에서 pip install 해도 패키지가 공유된다.

다른 방법에 대해서

사실 docker-compose.yml 을 interpreter 로 분리시키지 않고, 하나의 dev용 docker container 에서 처리하고 싶었는데, 이렇게 하려면 SSH를 설치해서 처리해야된다고 한다. (ENTRYPOINT ["python"]) 그리고 여기 부분 때문에 어려워 보이기도 함.

그렇게하면 혹시나 여러 python 프로젝트를 작업 진행할때에 사실 불편할 것 같기도 하고…

아닌가…?? 그게 더 편하려나…??

한번 시도는 해봐야겠다..


시도는 해봤는데, SSH라서 외부 포트도 열어줘야하고 생각보다 귀찮은 부분이 많다. 그리고 기존 내용을 아예 수정했는데

docker-compose-interpreter.yml 를 같은 docker 폴더로 합치게 되었다.

패키지 설치 후 패키지 Sync 하려면 Reload All Repositories 를 실행시켜주고

Python Interpreter 에서 한번 더 해당 Remote Python 을 선택해서 재실행 시켜줘야만 된다.