その他

python embeddableとMinGitを使ったportable環境の構築

投稿日:

先日、ZLUDAを使ったStable Diffusion WebUIのセットアップスクリプトを配布致しましたが、pythonとgitに関してはpython embedabbleとmin-gitを使用いたしました。

両方ともいわゆる組み込み向けの再配布可能な機能縮小版となります。

なお、今回は用途は極力環境を汚さずにWebUIを使用するという前提でお話させていただきます。

わたくしのようにROCmやZLUDAを使用しているとpythonの「.py」プログラムファイルそのものの書き換えが必要になる場合があるのでそうしたケースを想定しています。

 

Min Gitに関して

ダウンロードページ

Min Git

Min Gitは組み込み用途のGitであり、大掛かりなGUIを持つ通常のGitと比較すると、ダウンロードサイズ43.4 MBと非常に小さいです。

Gitとpythonどちらかを先にインストールするとすればこちらを先にインストールしたほうがよいでしょう。

理由はLinuxのコマンドが使えるようになるからです。

そのため、以下のフォルダにパスを切っておくとコマンドプロントからパス指定せずにLinuxのコマンドが使えるようになります。

Min-Gitを\minGitフォルダ以下に解凍したとします。

[インストールパス]\minGit\cmd

[インストールパス]\minGit\mingw64\bin

[インストールパス]\minGit\usr\bin

上の場所にコマンドの実行ファイルが含まれています。

 

[インストールパス]\minGit\cmd

git-receive-pack.exe
git-upload-pack.exe
git.exe
scalar.exe
tig.exe

 

[インストールパス]\minGit\mingw64\bin

blocked-file-util.exe
brotli.exe
git-askpass.exe
git-askyesno.exe
git-credential-helper-selector.exe
git-credential-manager.exe
git-credential-wincred.exe
git-http-fetch.exe
git-http-push.exe
git-receive-pack.exe
git-remote-http.exe
git-remote-https.exe
git-sh-i18n--envsubst.exe
git-upload-pack.exe
git.exe
headless-git.exe
proxy-lookup.exe
psl.exe
scalar.exe

 

[インストールパス]\minGit\usr\bin

awk.exe
b2sum.exe
basename.exe
basenc.exe
cat.exe
chattr.exe
cmp.exe
comm.exe
cp.exe
cut.exe
cygwin-console-helper.exe
dash.exe
date.exe
diff.exe
diff3.exe
dirname.exe
echo.exe
env.exe
expr.exe
false.exe
find.exe
gencat.exe
getfacl.exe
getopt.exe
gmondump.exe
grep.exe
head.exe
ls.exe
lsattr.exe
mkdir.exe
mktemp.exe
mv.exe
pathchk.exe
printf.exe
profiler.exe
pwd.exe
readlink.exe
rebase.exe
rm.exe
rmdir.exe
sdiff.exe
sed.exe
sh.exe
sort.exe
ssh-add.exe
ssh-agent.exe
ssh.exe
tail.exe
test.exe
touch.exe
tr.exe
true.exe
uname.exe
uniq.exe
wc.exe
xargs.exe

たった3つのフォルダにパスを切るだけでこれだけのLinuxコマンドを使うことができますので、かなりおすすめです。

wgetや解凍コマンドであるzipはありませんので、使いたい方は別途以下のHPからダウンロードして解凍しましょう。

wget

GNU wget for Windows

ZIP

Zip for Windows

Bzip2 for Windows

ダウンロードとzipの解凍はWindows標準では「bitsadmin」とPowershellの「Expand-Archive」コマンドレットで代用することができますが、書式が独特で使いにくいです。

頑張れば使えないことはないですが、無理せずにwgetやzipを普通に解凍して使ったほうが無難でしょう。

 

その際、下の3つのフォルダにパスを切っておき、

[インストールパス]\minGit\cmd

[インストールパス]\minGit\mingw64\bin

[インストールパス]\minGit\usr\bin

の何れかにコピーしておくとパス名をつけずに普通にコマンドとして使用することができます。

上の3つのパスであればどこでもよいと思いますが、わたくしは「[インストールパス]\minGit\usr\bin」を使用しています。

 

完璧主義の方へ

https://gitforwindows.org/latest-tag.txt
https://gitforwindows.org/latest-version.txt

上の2つのURLを変数に読み込むと現在の最新のバージョン名が取得できます。

dosのバッチファイルやLinuxのシェルスクリプト中で常に最新のバージョンをダウンロードして使いたいと考えている方はURLの一部に変数を展開して使うようにすれば可能です。

 

 

python embeddableに関して

Python Releases for Windows

では次にpython embaddableを見てみましょう。

python embaddableも非常に小さいプログラムで64bit通常版が27.6MBであるのに対して8.22MBに過ぎません。

ではみんなpython embaddableを使えばよいのでは?と思う方が多いと思いますが、残念ですが、python embaddableには欠点があります。

それは

  • pipが使えない
  • venvが使えない

WebUIを動かすために使うとするとかなり致命的な欠点ということになります。

このためわたくしは長らく、通常のpythonをインストールしてからzipファイルに圧縮したものを配布していました。

しかし、ここでも問題が発生します。

通常のpythonはpipコマンドが自分の位置を内部に保持しているらしく、警告が表示されます。

※ 警告が表示されるだけで問題なく使えることは確認しています。

しかし、あまり気持ちがよいものではありませんので、可能な限り持ち運ぶことを前提としたpython embaddableを使いたいのが人情だと思います。

そのほうが、容量も小さいですし。

ではpipとvenvを使うためにどうしたらよいかを説明します。

前提として、pythonのインストールフォルダを以下としてパスが切られているものとします。

[インストールパス]\python

 

pipは以下のurlからpythonスクリプトをダウンロードし、pythonのインストールフォルダ内(ここでは[インストールパス]\python)にコピーしてください。

pipインストールスクリプト

この「get-pip.py」をpythonのインストールフォルダにコピーしてで実行するとpipがインストールされます。

なお、pipをインストールした後は

python -m pip install --upgrade pip

を実行してpipを最新のバージョンにアップデートしておくことをお勧めしておきます。

 

 

また、venvはコマンドがpythonの中に組み込まれているため、インストールはできません。

しかし、以下のpipモジュールがvenvの元となっており、わたくしが動作確認した限りではvenvとまったく同じように使えます。

以下のコマンドを実行してください。

pip install virtualenv

venvと同じように使えるpipモジュールは「virtualenv」です。

こちらは仮想環境「venv」構築のコマンドが

python -m virtualenv venv

であることは意外は全くvenvと同じように使えます。

作成コマンドが違いますので、WebUIのプログラムに渡す前にvenv環境を構築しておけば、なんの問題もなく使えます。

activateやdeactiateの方法も全く同じとなります。

 

doskeyでコマンドマクロを定義しようとしたら・・・

わたくしは妙なところで完璧主義のところがありますので、venvとまったく同じように使用できないかどうか試行錯誤してみました。

doskey python -m virtaulenv=python -m venv

これがわたくしの思った通りに機能すれば普通のvenvと同じように使えたはずですが、残念ですが、doskeyはコマンドの間にスペースが入っているとうまく機能しないようです。

 

サンプルスクリプト

これらの具体的なスクリプトの記述方法、活用方法としては以下の記事にあるわたくしのスクリプトを挙げておきます。

dosのバッチファイルが読める方は参考にしてください。

参考:更新:Radeon RX7900XTX WindowsでStable Diffusion WebUIをZLUDAで動作させてみた。

 

-その他
-

Copyright© 自作ユーザーが解説するゲーミングPCガイド , 2024 All Rights Reserved.