🙇‍♂️

PyCharmでインタープリターを初めてちゃんと設定した(venv, poetry)

2024/07/13に公開

最近は生成AIや機械学習などの開発をするにあたってPyCharmを使っていますが、インタープリターの設定がどうもめんどくさくて、IDE上でimportのアラートがずっと出ているまま「とりあえず動けばいっか!」で開発していました。

こんな感じ。

そんな私がPyCharmの設定をちゃんと?やったので、その備忘録もかねて記事にしました。

「とりあえずエラーが出なくなった!」くらいなので、もっと良い方法があれば教えてください🙇‍♂️

今回はvenvpoetryの2つの仮想環境で設定しました。

PyCarmのインタープリター設定

PyCharmでインタープリター設定をどうやるのか、さらっとおさらいしていきます。
右下の<インタープリターがありません>に設定されているインタープリターが表示されます。

新しいプロジェクトの場合はローカルインタープリターを追加しましょう。

venvを使う

1. 現在のpythonのバージョンを確認

このバージョンが仮想環境内でも適用されます。

$ python --version
Python 3.10.14

2. 仮想環境を作成

$ python -m venv venv

3. インタープリターを設定

いよいよPyCharmでインタープリターを設定します。
インタープリターのパスは、プロジェクト内の./venv/bin/python3.xを指定します。

自分のプロジェクトの階層に移動してインタープリターを選択しましょう。

インデックス処理が完了したらアラートは消えるはずです。

poetryを使う

poetryがインストールされていない方は以下のドキュメントに従ってセットアップしてください。
https://python-poetry.org/docs/

1. プロジェクトの初期化

まずプロジェクトのpoetry環境を構築します。

$ poetry init

完了するとpyproject.tomlができます。

pyproject.toml
[tool.poetry]
name = "test-project"
version = "0.1.0"
description = ""
authors = [""]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.12"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

2. poetryの情報を確認

以下のコマンドで、このプロジェクトにおけるpoetryの情報を確認できます。
Executableのパスがインタープリターで設定するパスとなります。

$ poetry env info
Virtualenv
Python:         3.12.4
Implementation: CPython
Path:           /Users/xxx/Library/Caches/pypoetry/virtualenvs/test-project-wKu8j_gV-py3.12
Executable:     /Users/xxx/Library/Caches/pypoetry/virtualenvs/test-project-wKu8j_gV-py3.12/bin/python
Valid:          True

Base
Platform:   darwin
OS:         posix
Python:     3.12.4
Path:       /opt/homebrew/opt/python@3.12/Frameworks/Python.framework/Versions/3.12
Executable: /opt/homebrew/opt/python@3.12/Frameworks/Python.framework/Versions/3.12/bin/python3.12

3. インタープリターを設定

poetryの「既存の環境」を選択し、パスを設定します。
※PyCharmで新規にpoetryの環境を作成できますが、個人的にはPyCharmからは既存のものを選択するだけにした方がシンプルで分かりやすいのでコマンドでセットアップ→PyCharmで選択としています。

パスは先ほど確認したExecutableのパスとなります。

インデックス処理が完了したらアラートは消えるはずです。


これまでだいぶサボっていたのが、ここにきてスッキリしました。。

別の方法や間違いなどあれば教えていただけると嬉しいです。

Discussion