概要
・①環境を汚さない、②環境再現性が取れる、Pyhonの環境を構築(win版)
・たぶん現状、環境を全く汚さず、環境再現性が取れる唯一の方法
・Embeddable Python + Poetryで環境を構築(パスを通さない
背景
Pythonでおなじみのrequrememt.txtには再現性は保証されていない(と思う
たぶんrequrememt.txt出して、再構築したらコンフリクトする人は多いと思う。
私はコンフリクトして再構築不可能になった(2敗。
参考
対抗手段
対抗手段として最近では、Poetryだのryeだのuvが登場している。
おかげで環境再現性は担保されるようになってきたが、
PATHを通したくないシーンがあった時、ご面倒(工場のPCなど
一方で、Winpythonなどを使えばPortableな環境は手に入るが、
requremement.txtしか吐き出せないため環境再現性が低い。
目的
というわけで、
①環境を汚さない
②環境再現性
を両立できる方法を検証した。というのが全体像。
メリット
①環境を汚さないので、何かあればフォルダ事消せばすべて解決
②環境再現性が保証されているので、同じ環境を完全に再現することが可能
embetable pythonの入手とpipのインストール
pipを入れたところで作業終了。
「今回は例としてpandasというライブラリをpipでインストールする。」をやらないこと。
やってしまった場合は、フォルダを削除して、zipの解凍からやり直し。
pipでpoetryをインストールする
・cmdを起動(以下の参考を参照
・python.exeが存在するフォルダへcd後、
・setuptoolsをupdate
・poetryをインストール
cd C:\Users\Desktop\python-3.11.6-embed-amd64
python.exe -m pip install -U pip setuptools
python.exe -m pip install poetry
うまくいっていれば、Scriptsフォルダ内にpoetry.exeができている
参考
poetry.exeで仮想環境用のパッケージを作る
・cmdを起動(コード割愛
・poetry.exeが存在するフォルダに移動
・環境を作る(デスクトップにtest1という名前でフォルダを作ってもらう事にした
cd C:\Users\Desktop\python-3.11.6-embed-amd64\Scripts
poetry.exe new C:\Desktop\test1
うまく完了すれば、「Created package test1 in C:/Users/Desktop/test1」と出る
poetryで仮想環境を作成する
・cmdを起動(コード割愛
・poetry.exeが存在するフォルダに移動
・仮想環境の情報をtomlと同じところに置く設定をする(絶対に必要)
・仮想環境を構築(クソ長い。パスを通していないため、直接指定する必要があるため)
※poetryが複数存在する場合などを想定してフルパスで指定している
cd C:\Users\Desktop\python-3.11.6-embed-amd64\Scripts
poetry.exe config virtualenvs.in-project true
C:\Users\Desktop\python-3.11.6-embed-amd64\Scripts\poetry.exe install --directory C:\Users\Desktop\test1
参考
作った仮想環境を確認する
・cmdを起動(コード割愛
・仮想環境内のpython.exeが存在するフォルダへ移動
・仮想環境を起動
・Pythonのverを確認
cd C:\Users\Desktop\test1\.venv\Scripts
activate
# 画面が変わった後
python --version
こんな感じで出てくるはず
poetryのverを確認する
・前項からの続き(仮想環境に入ったまま
・poetryのversionを確認する
poetry --version
こんな感じで出てくるはず。
出てきたら、「deactivate」を入力して仮想環境から出る。
出たらcmdを閉じる。
仮想環境にすぐに入れるbatファイルを作成しておく
あると後々便利なので作っておく。
・フォルダを開く(今回はC:\Users\Desktop\test1)
・poetry_env.txtを作る(名称はなんでも良い)
・コマンドを書き込む(以下を参照。要はScript内のactivateを動かせっていう命令文)
・「.txt」を「.bat」に変更する
@echo off
cd .\.venv\Scripts
call activate.bat
cmd
出来上がったbatをダブルクリックすると、仮想環境に入った状態でcmdが起動する。
後々、便利。終わったら、右上のバツを押すなりして消す。
以上で環境構築自体は完了。
poetryを自由に使う
詳しいことは、先人たちが記載済なので割愛
参考
例:jupyter labを入れてみる
・poetry_env.batをダブルクリック
・poetry add jupyterlab と入力(Writing lock fileと出たら完了)
・jupyter labを起動(しばらく時間かかる)
poetry add jupyterlab
# Writing lock fileと出たら
jupyter lab
pandasなどほぼ必須なライブラリは当然入っていないので、自分でaddしてください。
※もし、ライブラリをaddしたときにエラーでたら以下を参照
VSCodeを使う(Portable)
準備
interprinterの選択
あとがき
偉大なる先人の皆さんはお気づきのように、Pythonのver指定がとても面倒です
(3.10.1と3.10.2を使うなら、2つEmbeddable Pythonが必要)
本当はpyenvで楽をしたかったのですが、環境を汚さない方法がわかりませんでした。
偉大な人がPython用意するの面倒な問題は解決してくれるでしょう。
まぁフツー(パス通せる環境)ならrye使うよ。