1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pyenvを使わないでpoetryを使えるか検証してみて今更分かったこと

Last updated at Posted at 2024-12-08

①結論

 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のバージョンでは使えない外部モジュールをインストールしようとして「バージョン合ってないっす(・ω<)」とはねられたときのターミナルの様子

poetry依存関係に問題がある場合.png

例2:無事に外部モジュールをインストールできたときのターミナルの様子

スライド2.PNG

検証してみた・調べてみた過程

⑤そもそも 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コマンドを使うと次のようになります。

windowspowershell.png

この後、例えば 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を起動した状態で無いとパスを教えてくれません。

which_poetry.png

実際に確認すると、たしかに以下のように有りました。
(※Ubuntuをインストールしている場合、Ubuntu以下に該当のフォルダがあります。)

poetry

スライド5.PNG

スライド6.PNG

pyenv

スライド7.PNG

⑥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のインタープリターはインストールされます。

python396.png

(ii)何らかのターミナルを開いて以下のコマンドを順に用いて、Linux内のフォルダにインストールした場合

※2つ目は3.9以前のバージョンをインストールする場合のみ必要

wsl
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.
# 〇には10、11、12、13等のバージョンの数字を入れてください
Python3.13をLinux内のフォルダにWindowsPowershellに入れたときの様子

スライド8.PNG

上記の3つ目までのコマンドでLinuxにPythonのインタープリターらしきものを入れた様子

スライド9.PNG

※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」になるからです。
(〇の数字でだいたい外部モジュール使えるかどうかは切り分けられると感じていますが・・・)

poetry.png

※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絵とき入門 鈴木 亮(著)

Amazonリンク

https://www.amazon.co.jp/%E9%96%8B%E7%99%BA%E7%B3%BB%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEDocker%E7%B5%B5%E3%81%A8%E3%81%8D%E5%85%A5%E9%96%80-%E9%88%B4%E6%9C%A8%E4%BA%AE/dp/4798071501/ref=sr_1_2_sspa?crid=2SFG6IOUNDSL1&dib=eyJ2IjoiMSJ9.Zwjw3bHWFWkREnoJTMfDLkyyu_8yQatpaVVURbXh2zX6AdkWoBJiJOUdb5HxlGJK4hIqL_0NQ6EIWmTXd0jL2ELxQ-HlZcejd58zsR0OrYfOoaQkPfnRJvE2g7IUZI0YxEGMpmaNpJuusp5Bn3gKkApghJAIV3RfoygsXPqpIUo9P0xutM5h9J1iePIZGqGgJ_mBdhvSrUEIes7dmfyuExHx3qEUeYSkveOTE2_8IVs_vUS_wHHX9jothQXat4LiXINPb8r5m4BLHaNhpyjyMUDdcvUP7XWqYY0Ga1nhdhM.ZXX6dZR-nX3n6zEiu2cLOig0V_pTbjRSPTnOuNK3a24&dib_tag=se&keywords=docker+%E7%B5%B5%E3%81%A8%E3%81%8D+%E5%85%A5%E9%96%80&qid=1730124958&sprefix=Docker%E3%81%88%E3%81%A8%2Caps%2C224&sr=8-2-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1

⑤確かな力が身につくPython「超」入門 第2版 (確かな力が身につく「超」入門) 鎌田正浩(著)

Amazonリンク

https://www.amazon.co.jp/%E7%A2%BA%E3%81%8B%E3%81%AA%E5%8A%9B%E3%81%8C%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%8FPython%E3%80%8C%E8%B6%85%E3%80%8D%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E7%A2%BA%E3%81%8B%E3%81%AA%E5%8A%9B%E3%81%8C%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%8F%E3%80%8C%E8%B6%85%E3%80%8D%E5%85%A5%E9%96%80-%E9%8E%8C%E7%94%B0-%E6%AD%A3%E6%B5%A9/dp/4815613729/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=281676K3CHBM4&dib=eyJ2IjoiMSJ9.vsFms5ozIxbiz1EUbCK7pvmgXEFK3bKBAyJ20rX2BLHDdDr4JM7-UzWCKySAePTfmg2NBuapFlZvsluFWwKTv12JWR5bTRl1ZNrzMzWxu2-pcm502xaDcaWpVSxpy3gs5A7ejXRp3bXSirqbqpMOK5LQ0WmBCHWj442aT5dPtRa_oQKyQ-F1w8W8kurKHEMbxedTuAeAl0CYgQrfuXx1gaf5HwGwvUsMYNykTpyQIVeZiQRv-EljnqbFlcx40t1IFPIOZsoFSBaDqvpB_Uz1R2lcAKxGy_Pt8Qy6Ogyg7IQ.b64TwLiX9Ak3zH2Zrd5K2YyUMmed_bRGYv0_fo9ejLE&dib_tag=se&keywords=python+%E3%80%8C%E8%B6%85%E3%80%8D%E5%85%A5%E9%96%80&qid=1730125179&sprefix=python+%E8%B6%85+%E5%85%A5%E9%96%80%2Caps%2C248&sr=8-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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?