環境
current/
├ mingw64/
│ └ bin/
└ python/
├ Lib/
├ Scripts/
│ └ site-packages/
│ └ setuptools/
│ └ _distutils/
└ get-pip.py
動機
埋め込み版python3.10.8でcythonを使うのに手間取ったのでメモ書き程度に記す。
埋め込み版を使わないのであれば必要ない話である
埋め込み版を使わなきゃいい話である
currentを作業ディレクトリとする
困ったこと
1. includeファイルがない
解決法
同バージョンの普通の python をダウンロードしてから include ディレクトリをcurrent\python\下にコピペする
ここで埋め込み版を使うのをあきらめればすべて解決する
異なるバージョンからコピペしてはいけない
cythonize した関数の実行時に不自然なエラーが出続けたりする
2. ディレクトリがない
上記のリンクを見たがdistutilsディレクトリは埋め込み版にはないのだ
解決法
current\python\Lib\distutils ではなく current\python\Lib\site-packages\setuptools\_distutils\ のディレクトリ下にdistutils.cfgを作成して以下のように書き込む :
[build]
compiler=mingw32
[build_ext]
compiler=mingw32
埋め込み版を使うメリット
pyhonのディレクトリを移動した後にget-pip.pyを実行し複雑なパスを設定しなおせば問題なく使えるため移植しやすい。以下は移植後の設定用バッチファイルであるcurrent//下において権限付きで実行する:
cd %~dp0
@echo "%cd% is equivalent to your curreent directory? If not,terminate it immediately"
@pause
SETX /M PATH "%PATH%;%cd%\mingw64\bin;%cd%\python\Scripts;%cd%\python"
.\python\python.exe .\python\get-pip.py
PATHが登録されてない!
cmdのPATHはcmdを開く前に決まってる。
だから新しく開きなおしたcmdではちゃんと変更されているはずである。
%PATH%;を絶対に忘れるな!
setxは上書きするコマンドなので使い方によってはパスがすべて消えたりするので扱いには注意。