Python Embeded でお手軽（？）環境構築の忘備録

## 別にインストーラ版使えば良くね？
そう思った貴方！！そのとーーーーーーりーーーー！！！
以下の精神がない方は素直にインストーラ版使ってください。
そのほうがネットで情報探すのも楽だし何よりつまづく事ほとんどないはず。

## なんでEmbeded版使うの？
理由は以下２つ
①開発環境をイチから構築してこそ三流くんの鏡
②会社の環境でレジストリ荒れると警告食らう
一番の理由は①、これくらいできなきゃ開発者名乗る資格なし
そして個人的には②の理由も結構致命的。違法ソフト呼ばわりされるのが迷惑なのでインストールはなるべくしたくない、ってことです。
但し、インストーラ版にしか含まれてないフォルダはなんとか取り出すしかないです……標準装備してくれよ…

## 動作環境
OS：Windows 11 Pro 21H2
Python Version：Python 3.10.4
PCスペックは皆さんが使用しているマシンより間違いなく性能低いです。

## 構築してみよう
まずは、Python公式サイトからEmbeded版をDLしましょう。
ついでに同じバージョンのInstaller版もDLしましょう。
※2022年4月1日時点での最新版は3.10.4
[Python公式DLリンク](https://www.python.org/downloads/windows/ "Python DL")
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/05a39414-9d0c-9723-7ddf-0e19bd37c3ef.png)

### ダウンロードしたら解凍しましょう
ワタクシ三流くん以上の皆さんはわかってると思いますがフォルダ名にバージョン表記の「．」があると色々と面倒なので取っちゃうか別のファイル名に直すこと。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/a504cb59-3c7b-965a-c491-d60340e31413.png)

### 解凍したフォルダの中から「python310.zip」を探し出し解凍する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/d216a5aa-364f-ec53-bd36-886da42b4094.png)
ついでに**フォルダ名**を「python310.zip」に変更する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/0caa85dc-b82b-8c23-b86f-4dfbcd02a307.png)

### パスを通しましょう（フルパス運用する人は読み飛ばし！）
以下二行を設定
{pythonフォルダが置いてある階層}\{Pythonのフォルダ名}
{pythonフォルダが置いてある階層}\{Pythonのフォルダ名}\Scripts
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/fc78eaee-57a5-62ea-0786-dee4c6af7783.png)

### Installer版を起動しましょう。
「Install_launcher for all users」のチェックを外して「Customize installation」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/4946bf6b-6541-f3e7-3019-ad253781a981.png)
「tcl/tk and IDLE」だけにチェックを入れて次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/5e51fb83-f8e8-d78c-e7e1-89399b805c05.png)
全てのチェックを外して「Customize install location」を分かりやすい場所を指定して次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/19fa5d24-49a0-13da-b183-8716af754efc.png)
1分程度でインストールが終わるのでクローズ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/89e44cd9-c527-75e9-dda5-93cff8f58bef.png)
インストール先のフォルダを開き、以下のファイルをコピーして、Embeded版pythonのフォルダ直下に配置する。
↓Installer版直下にある「tcl」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/14c5dd00-6421-a4ab-2aae-7bebaa562ce8.png)
↓Installer版フォルダ内\Libの直下にある「tkinter」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/d97ca308-05a3-5c4c-2c54-58ae55b84323.png)
↓Installer版フォルダ内\DLLsの直下にある「_tkinter.pyd」「tcl86t.dll」「tk86t.dll」の3つ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/3a3ed758-df48-5822-8893-43b11e3f2c7c.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/1aa8756a-b10e-b307-8487-bc08309bb522.png)
↓コピーした後のEmbeded版pythonフォルダの中
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/6deb8756-e59d-7464-a9f6-9dd404cf8e1f.png)
Installer版はここで用済みなので「プログラムの追加と削除」からアンインストールを実行しておきましょう。


## 必要な機能を設定してみよう
何がともあれpipが使えないと話にならないのでpipをダウンロード
[bootstrapのpip用スクリプト](https://bootstrap.pypa.io/get-pip.py "pip-get")

pythonフォルダの中から「python310._pth」を探しメモ帳で開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603328/18071548-cc7d-8363-82a6-392ae2820bd7.png)

この状態から最終行の「＃import site」を
```python310._pth
python310.zip
.

# Uncomment to run site.main() automatically
＃import site
```

＃を削除して「import site」に直す
```python310._pth
＃python310.zip
.

# Uncomment to run site.main() automatically
import site
```
この御呪い無しで進むとpipと格闘することができる。（要するに動かない）

コマンドプロンプトを起動し、以下のように実行
```コマンドプロンプト
C:\Users\hogehoge>python {get-pip.pyの置いてある場所のフルパス}\get-pip.py
```
インストールに成功すると
```コマンドプロンプト
Successfully installed pip-22.0.4
```
とメッセージが表示される。

Pythonとpipの動作を確かめる為に以下のコマンドを実行してバージョンが表示されればOK
```python -V
C:\Users\hogehoge>python -V
Python 3.10.4
```
```pip -V
C:\Users\hogehoge>pip -V
pip 22.0.4 from C:\Users\JNC\Desktop\Python3\lib\site-packages\pip (python 3.10)
```

御呪いしないと、
```pip -V
C:\Users\hogehoge>pip -V
Traceback (most recent call last):
  File "runpy.py", line 196, in _run_module_as_main
  File "runpy.py", line 86, in _run_code
  File "C:\Users\hogehoge\Desktop\Python3\Scripts\pip.exe\__main__.py", line 4, in <module>
ModuleNotFoundError: No module named 'pip'
```
となる。

## Windows標準の実行ファイル「.exe」に変換するPyinstallerをインストール
コマンドプロンプトで以下を実行
```コマンドプロンプト
C:\Users\hogehoge>pip3 install pyinstaller
```
サンプルコードとかは各自ググること

## フルパス利用時の簡易バッチ
パスを切らずに運用するための簡易バッチのサンプルをおいておきます。
```pycコンパイラ.bat
cd /d %~dp0
rem %~dp0でBAT実行中のカレントパスを取得できる。
python.exe -m compileall temp.py
pause
```
```py実行用.bat
cd /d %~dp0
rem %~dp0でBAT実行中のカレントパスを取得できる。
python.exe temp.py
pause
```

## Proxy内側のPCでpipしたい場合のバッチ
社内ネットワークでproxyを越える必要がある環境でpipするときのバッチ。
```proxy利用pip.bat
set https_proxy=http://ID:パスワード@ホスト名:ポート番号
python -m pip install パッケージ名
pause
```