PyCharm で Python インタープリターを使う
AIを勉強する中でPythonを使っていて、 ここではPyCharmを使って試しています。 ただ、エディターに問題があり、 Node.jsの場合はnode modulesがあるため、インタープリターはうまく接続されます。 しかし、Pythonは思った以上にバージョンが異なる場合があるということです。 2.7、3.1 そ
AIを勉強する中でPythonを使っていて、 ここではPyCharmを使って試しています。 ただ、エディターに問題があり、 Node.jsの場合はnode modulesがあるため、インタープリターはうまく接続されます。 しかし、Pythonは思った以上にバージョンが異なる場合があるということです。 2.7、3.1 そ
目次
AIを勉強する中でPythonを使っていて、 ここではPyCharmを使って試しています。
ただ、エディターに問題があり、
Node.jsの場合はnode_modulesがあるため、インタープリターはうまく接続されます。
しかし、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)という構成です。
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"]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: trueservices:
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: trueDockerfileでtargetを使い、dev用とinterpreter用に分けました。
volumesのNameにpython-packages-cat-studyを設定して、プロジェクトごとにインタープリターが参照するPythonパッケージフォルダーを分けました。
dev用とinterpreter用のvolumeが同じ場所を参照しているため、devでpip installしてもパッケージは共有されます。
実はdocker-compose.ymlをinterpreter用に分けず、1つのdev用Dockerコンテナで処理したかったのですが、そのためにはSSHをインストールして対応する必要があるそうです。
(ENTRYPOINT ["python"])そして、この部分も難しそうに見えます。
そうすれば、複数のPythonプロジェクトを同時に進めるときには、かえって不便な気もしますし...
いや、そうでもないのかな...?? そのほうが便利なのかな...??
一度試してみようと思います..
試してみましたが、SSHなので外部ポートも開放する必要があり、思ったより面倒なことが多いです。 そして、既存の内容をまるごと変更したのですが、
docker-compose-interpreter.ymlを同じdockerフォルダーにまとめることになりました。


パッケージをインストールした後、パッケージをSyncするにはReload All Repositoriesを実行し、
必ずPython Interpreterで該当するRemote Pythonをもう一度選択して、再実行する必要があります。