①結論
poetry、Pythonの各インタープリターを Linuxにインストールしておけば、「ある程度」はpyenvを使わずともpoetryのみでpythonのインタープリターのバージョン指定も各プロジェクト作成時にできる。
※今回pyenvをインストールしたものの、pyenv によるpythonのバージョン変更に手こずり、poetryだけでなんとかできないかなあ(´д`)と思って以下の主な参考資料①~③、⑥~⑧ 及び、公式docのIntroduction(の With the official installer)・Basic usageあたりを読んだり、Chat-GPT(3.5ですが・・・(-_-;))に聞いたりしながら沼に嵌まったときの備忘録です。(必要に応じて「〇pythonはどこにインストールされるか」から読んでもらえば主旨は伝わるかと思います。)
②poetryの概要
poetry:Python外部モジュールのパッケージ管理と依存関係の管理を簡単にしてくれるパッケージ管理システム
※ Javascript、Node.js(Javascriptの実行環境の1つ:(※主な参考資料⑨参照)) におけるnpmのようなもの
※本Qiita筆者の作業環境
筆者は、基本Windowsユーザーで勤務先の会社も基本的にどうやら全てWindowsぽいです。エディターは基本的にVScodeを利用しています
③沼った原因の根幹(ベテランの人からするとしょうもない理解度だと思うのですが・・(-_-;))
例えば同じcurlコマンド等を使っていても〇 wsl(Windows System for Linux)など使ってインストールしたもの ⇒ Linuxフォルダの中のフォルダにインストールされる
〇 wslを使わずLinuxないしUbuntu等のディストリビーションをインストールしたもの ⇒ 「C:\Users\各個人設定のユーザー名\AppData\Local\Programs」または「C:\Users\各個人設定のユーザー名」
にインストールされたファイルがある。
④pyenvとは
pyenvは、例えば、Python3.9.6とPython3.11.3等、Python インタープリターそのもの(https://www.python.org/ )のバージョン管理ツールで、複数のバージョンの Python を同時にインストールし、プロジェクトごとに異なるバージョンを簡単に切り替えられるようにするためのものです。
※外部ライブラリーをPyPI(つよつよの人がガンガン自分で作ったPythonの外部ライブラリー・外部モジュールを挙げているOSSのリポジトリ:https://pypi.org/ ) や公式docからインストールして使うにあたり、「このバージョンはサポートされていません」 ということがPythonはガンガン起こります。
※poetryはこの「このバージョンはサポートされていません」状態をかなり簡単に解消してくれます。(というか最初の段階で丁度いいバージョンを選んでくれます)
使ってみた例
例1:現在使っているPythonのバージョンでは使えない外部モジュールをインストールしようとして「バージョン合ってないっす(・ω<)」とはねられたときのターミナルの様子
例2:無事に外部モジュールをインストールできたときのターミナルの様子
検証してみた・調べてみた過程
⑤そもそも poetry・pyenvはそれぞれどこにインストールされるのか・するべきなのか
(i)poetry も pyenv も基本的にはLinuxにインストールして使うらしい
Linuxとは
基本的に無料で利用可能なオープンソースのOS(Operating System)。Ubuntu(ウブントゥ)、Debian(デビアン)など、さまざまな「ディストリビューション」と呼ばれるバージョンがあります。(詳しくは例えば以下の資料を参照してください。)
Linuxの基礎知識をまとめてみた @yuuu1654 (ゆう) さん Qiita
https://qiita.com/yuuu1654/items/ea1ec653170589bd2b50
なお自分は、主な参考資料④で dockerを学習する過程でLinux(厳密にはUbuntu)の操作の本当に初歩の初歩だけ学習しました。
(ii)インストールの方法:Windowsでwslコマンド使って Linux にPoetryらをインストールしてみる
コマンドプロンプト・WindowsPowershell・Git for Windowsをいずれかを開いて、とりあえず次のwsl(Windows System for Linux)コマンドを使います。
wsl
例えば、WindowsPowershellを開いてwslコマンドを使うと次のようになります。
この後、例えば poetry をインストールをする場合は、上記の公式 doc のInstallation の With the official installer タブに従い、
$ curl -sSL https://install.python-poetry.org | python3 -
#コピペするときは「$」以降を使用してください
を使うとpoetryがインストールできます。無事にインストールできた場合は、wslを起動した状態で
$ poetry --version
#コピペするときは「$」以降を使用してください
を使うとインストールしたpoetryのバージョン(の数字)が表示されます。
なお、他に外部ライブラリーをインストールする方法として広く用いられているpipコマンド同様に poetry 自身をバージョンアップするコマンドも上記の にWith the official installer タブ載っています。(ここでは割愛)
また同様に、wslを起動した状態で主な参考資料⑥~⑧に従い、pyenvをLinuxにインストールすることができます。
(iii)どこにインストールされたか
どこにインストールされたか調べるには、例えばwslを起動した状態でLinuxにインストールした物であれば、wslを起動した状態で
$ which インストールしたものの名前
#コピペするときは「$」以降を使用してください
で調べることができます。例えば、poetryを調べる場合は次のように入力します。
$ which poetry
#コピペするときは「$」以降を使用してください
※以下の画像のようにwslを起動してインストールしたものはwslを起動した状態で無いとパスを教えてくれません。
実際に確認すると、たしかに以下のように有りました。
(※Ubuntuをインストールしている場合、Ubuntu以下に該当のフォルダがあります。)
⑥pythonはどこにインストールされるか
自分はPythonの学習は主な参考資料⑤が最初の1冊目なのですが、今現在自分が本屋を行脚して他にもこれまで眺めてきた限り、Pythonの学習書はPythonのインストールについては、以下のいずれにあるインストーラを紹介していることがほとんどです。(Udemyは普段自分はあまり使っていないので正直??です。)
(1)Python 公式 doc ( https://www.python.org/ )
(2)Anaconda 公式 doc ( https://www.anaconda.com/download )
(※AnacondaはPythonに関するプログラムやエディターが諸々セットになったようなものです。個人的にはあまりオススメしませんが、その理由はここでは割愛します)
※インストールされる場所に関する注意
(i)本等に従い、インストーラーを使ってインストールした場合
往々にして以下のローカルのCドライブ内の場所にPythonのインタープリターはインストールされます。
(ii)何らかのターミナルを開いて以下のコマンドを順に用いて、Linux内のフォルダにインストールした場合
※2つ目は3.9以前のバージョンをインストールする場合のみ必要
wsl
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.〇
# 〇には10、11、12、13等のバージョンの数字を入れてください
上記の3つ目までのコマンドでLinuxにPythonのインタープリターらしきものを入れた様子
※Python3.11、Python3.12等も同様にして入れました。
〇とりあえず、Djangoのプロジェクトを作ってみてPoetryを導入するとどうなるか試してみた
下記のようにDjangoのプロジェクトを作ってみて、
wsl
$ poetry init
でpoetryを導入して pyproject.toml(Pythonプロジェクトの設定や依存関係を管理するためのファイル、requirements.txtとvenvを合体させたようなもの)を作る過程で切り替え(というより再指定)することができました。
なお、冒頭の結論に「ある程度」と書いたのは例えば以下の画像のように
wsl
$ poetry env info
で各プロジェクト内で使われているインタープリターのバージョンを調べてみると、下の画像のように
Python3.11を指定した場合⇒3.11.0
Python3.12を指定した場合⇒3.12.0
に「3.〇.△」の△の数字が「0」になるからです。
(〇の数字でだいたい外部モジュール使えるかどうかは切り分けられると感じていますが・・・)
※pyproject.tomlの8行目も「python = "^3.11"」になっていることに注意
また、「LocalのCドライブには、上記のPython3.9.6しか入れていなくても」プロジェクトに3.11(.0) や 3.12(.0)を指定できたことに注意
調査中の懸念材料
そもそも、ここまでの段階で 「sudo apt install」を乱用しているのは大丈夫なのか心配してます。私用PCで基本自宅のご飯机での学習でしか使ってないし、強盗とかに入られてPC盗まれるようなことがない限り大丈夫だと思いますが・・・
主な参考資料
①[Python3 / poetry] LinuxOS上にpoetryをinstallする方法が切り替わっていた @siruku6 さん Qiita
https://qiita.com/siruku6/items/90a34539b954de717de6
②Poetryをサクッと使い始めてみる @ksato9700 さん Qiita
https://qiita.com/ksato9700/items/b893cf1db83605898d8a
③[初心者向け] Poetry入門!インストール方法から使い方、コマンド、パッケージの管理方法まで徹底解説 @shun198 さん Qiita
https://qiita.com/shun198/items/97483a227f288ad58112
④開発系エンジニアのためのDocker絵とき入門 鈴木 亮(著)
⑤確かな力が身につくPython「超」入門 第2版 (確かな力が身につく「超」入門) 鎌田正浩(著)
⑥pyenvのインストール、使い方、pythonのバージョン切り替えできない時の対処法
@koooooo in P&D – Planning and Development –さん Qiita
https://qiita.com/koooooo/items/b21d87ffe2b56d0c589b
⑦pyenvの使い方 @teri_man95(teriman) さん Qiita
https://qiita.com/teri_man95/items/b15fd8f1964612331be2
⑧pyenvのbashrcで少しつまずいた @emi-cd(白志野) さん Qiita
https://qiita.com/emi-cd/items/d7207409f20a7a6029d6
⑨Node.jsとはなにか?なぜみんな使っているのか? @non_cal さん Qiita
https://qiita.com/non_cal/items/a8fee0b7ad96e67713eb