0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

環境を全く汚さず、環境再現性が取れる、おそらく唯一の Pyhonの環境構築法

Last updated at Posted at 2025-01-03

概要

①環境を汚さない、②環境再現性が取れる、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ができている
image.png

参考

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

うまく完了すれば、以下のようになるはず
image.png

参考

作った仮想環境を確認する

・cmdを起動(コード割愛
・仮想環境内のpython.exeが存在するフォルダへ移動
・仮想環境を起動
・Pythonのverを確認

cd C:\Users\Desktop\test1\.venv\Scripts
activate

# 画面が変わった後
python --version

image.png

こんな感じで出てくるはず

poetryのverを確認する

・前項からの続き(仮想環境に入ったまま
・poetryのversionを確認する

poetry --version

image.png

こんな感じで出てくるはず。
出てきたら、「deactivate」を入力して仮想環境から出る。
出たらcmdを閉じる。

仮想環境にすぐに入れるbatファイルを作成しておく

あると後々便利なので作っておく。
・フォルダを開く(今回はC:\Users\Desktop\test1)
・poetry_env.txtを作る(名称はなんでも良い)
・コマンドを書き込む(以下を参照。要はScript内のactivateを動かせっていう命令文)
・「.txt」を「.bat」に変更する

@echo off
cd .\.venv\Scripts
call activate.bat
cmd

image.png

出来上がったbatをダブルクリックすると、仮想環境に入った状態でcmdが起動する。
後々、便利。終わったら、右上のバツを押すなりして消す。
image.png

以上で環境構築自体は完了。

poetryを自由に使う

詳しいことは、先人たちが記載済なので割愛

参考

例:jupyter labを入れてみる

・poetry_env.batをダブルクリック
・poetry add jupyterlab と入力(Writing lock fileと出たら完了)
・jupyter labを起動(しばらく時間かかる)

poetry add jupyterlab

# Writing lock fileと出たら
jupyter lab

image.png
こんな感じで出る

pandasなどほぼ必須なライブラリは当然入っていないので、自分でaddしてください。
※もし、ライブラリをaddしたときにエラーでたら以下を参照

VSCodeを使う(Portable)

準備

interprinterの選択

あとがき

偉大なる先人の皆さんはお気づきのように、Pythonのver指定がとても面倒です
(3.10.1と3.10.2を使うなら、2つEmbeddable Pythonが必要)
本当はpyenvで楽をしたかったのですが、環境を汚さない方法がわかりませんでした。
偉大な人がPython用意するの面倒な問題は解決してくれるでしょう。

まぁフツー(パス通せる環境)ならrye使うよ。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?