Anacondaを利用しないでWindoswPC(社用PC)にPython環境を構築してもらう手順書

# WindoswPCでのPython環境の構築方法(自分メモ用)
Anacondaのパッケージが商用利用が **有料** らしく
社用PC(Windosw)に気軽にいれれない（いれてもらえない）。なので、Python環境を準備するやり方をメモする。
(有料化についてまとめていただいている記事)

https://qiita.com/tfukumori/items/f8fc2c53077b234384fc

## Python環境について
[このHPを参考にさせていただきました。](https://www.python.jp/install/windows/install.html "")

https://zenn.dev/tfukumori/articles/76c1d610ef6930

以下のような作りにする。
作り方 | どこに | インタプリンタ切替 | 仮想環境切替 | パッケージ管理
--- | --- | --- | ---- | --- 
Python + py.exe + venv + pip  | Windows  | py.exe | venv | pip


## Pythonインストール

:::note info
Pythonインストールに管理者権限が必要(情シスに申請しましょう。)
:::

WindowsへのPythonインストール
　[参考:Python Japan:Windows版Pythonのインストール](https://www.python.jp/install/windows/install.html "")

1. 以下サイトからPythonダウンロード
https://pythonlinks.python.jp/
※とりあえず最新のものでいれておけばOK
1. パッケージをインストールする。
     ①「Use admin privileges when installing py.exe」をチェック． 
     ②「Python 3.x to PATH」 をチェック
     ③Install now をクリックしてインストールを開始
 ※②は絶対にいるっぽい。①はチェックしたほうが無難の様子…くわしくはわかりません。
 ※「Disable path length limit」が表示される場合がある．クリックして、パス長の制限を解除する
1. PowerShellでPython実行＋環境設定
    ①Python実行できること
    ```PS
    C:\Users\xxx> python
    Python 3.12.0 (tags/v3.12.0:0fb18b0, Oct  2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)]on win32
    Type "help", "copyright", "credits" or "license" for more informatio.
    ```

    ②環境設定（忘れず）
   ```PS
   Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
   ``` 
4. pipのアップデートの実施(このあとpipを利用するため)
   ```PS
   py -m pip install --upgrade pip
   ``` 



## pipでパッケージをインストール
:::note info
自身の環境では、パッケージインストールには管理者権限は不要でした
:::
パッケージをインストールする際はPowershellで以下コマンドで実行する。
※パッケージは仮想環境ごとにインストールするなどしたほうがいいかもしれないが、業務で使うレベルであればそのままインストールでいいかな…

```shell
py -m pip install (パッケージ名)
```
 * pythonコマンドを利用せず **pipコマンド** だけでもインストールできるが、上記を使ったほうが初心者は混乱しないらしい
     * [参考:”pip install” と “python -m pip install” の違い](https://daeudaeu.com/python-pip-difference/ "")
 * py.exe と python.exe の違い
     * Windowsではpythonコマンドの代わりに __pyコマンド__ 使えばよさそう（インストールされた一番新しいPythonバージョンを自動で選択してくるらしい）
     * [参考:【ざっくり解説】py.exeって何？](https://python-beginner.blog/whatpyexe/ "")



### インストールするパッケージリスト
すぐに欲しくなりそうなものをピックアップしました。
使いたいものができた場合は都度追加してください。
| パッケージ名 | 内容 | 参考リンク |
|:-:|:-:|:-:|
| pandas | Pythonの表計算とえば。  |   |
| numpy  | 計算処理系といえば。  |   |
| scipy  | 統計処理といえば。  |   |
| matplotlib  | グラフ描写といえば |   |
| japanize-matplotlib  | matplotlibの日本語対応  |   |
| seaborn   | かっこいいグラフ用  | https://qiita.com/hima2b4/items/2bdb20a25fde2923afa5  |
| requests  | HTTP通信ライブラリ。 |   |
| lxml | HTMLファイルの処理用のライブラリ | [【Python】lxmlライブラリを使ったHTML解析]( https://yumarublog.com/python/lxml/ "") |
| beautifulsoup4  | Webスクレイピングといえば。 |   |
|Selenium | Webブラウザ操作 |   |
| openpyxl  |Excel操作といえば。 |[openpyxlでよく使う操作についてのまとめ](https://qiita.com/YukiYamam/items/d0e38921f5b51a950c40"")   |
| xlwings  |直接Excel操作できる。 | [【Python】openpyxlとxlwingsとの比較](https://posipochi.com/2021/05/29/python-opnepyxl-xlwings/ "")   |

ネットワーク関係のパッケージ
| パッケージ名 | 内容 | 参考リンク |
|:-:|:-:|:-:|
| schedule| 定期実行するために。  |   |
| PySNMP | SNMPを利用  |   |
| Paramiko | SSHプロトコルを操作  |   |
| Netmiko | NW自動化するために(機器に接続,コマンドを送信,結果を受取)  |[netomikoを利用したNW機器の自動コンフィグバックアップの仕組みづくり](https://qiita.com/ctc-y-sumi/items/76fdcd50974a28d27650 "")     |


便利ツール
| パッケージ名 | 内容 | 参考リンク |
|:-:|:-:|:-:|
| pip-review | パッケージの一括アップデートしたいのでとりあえず。  | https://zenn.dev/kittybbit/articles/bf8dd1db0e307d  |
| tqdm | 処理状況をプログレスバーの表示  |   |
| pymsteams | Teamsへのメッセージ送信 | https://pypi.org/project/pymsteams/  |


###### 一括でインストールしたい場合は、requirements.txtで一括インストール
```shell
py -m pip install -r requirements.txt
```
※requirements.txtを実行フォルダに用意してください。
```shell:requirements.txt
pandas
numpy
scipy
matplotlib
japanize-matplotlib
seaborn
requests
lxml
beautifulsoup4
selenium
openpyxl
xlwings
schedule
PySNMP
Paramiko
Netmiko
pip-review 
tqdm
pymsteams
```
※全部インストールできたら、pip-reviewを利用してすべてをアップデートが必要か確認するとよい。
```shell
#インストールしたパッケージ一覧
pip list
#アップデートできるパッケージを表示
pip-review
#すべてアップデート済みなら以下が表示される。
Everything up-to-date
#アップデートが必要なら以下コマンド実施
pip-review --auto
```

### おまけ：pipに失敗したら？

#### SSLエラーが発生した場合。
自分の環境だと以下参考ページと同様のSSL認証エラーが発生しました。
　　[参考:WindowsでPIP Install するとSSLエラーになるのを解消する。](https://qiita.com/kekosh/items/e96e822bf9cb6ca1aff8 "")
会社のネットワーク環境を変更することもできないため、[--trusted-host」オプションで接続先のサイトを認証信頼することで対応しました。
　 許可したサイト
　 ・pypi.org
 　・files.pythonhosted.org
（参考サイトだと、pypi.python.orgも許可していたが上記２つでOKでした。)
```shell:
py -m pip install (パッケージ名) --trusted-host pypi.org --trusted-host files.pythonhosted.org
```
※もしSSLエラーが起きた場合は、本手順のpipコマンドのすべてに、`--trusted-host pypi.org --trusted-host files.pythonhosted.org`を追加して実行する。
参考にrequirements.txtで一括インストールする場合、以下となる。
```shell
py -m pip install -r requirements.txt --trusted-host pypi.org --trusted-host files.pythonhosted.org
```

#### 管理者権限がない場合。
https://gammasoft.jp/support/pip-install-error/

以下--user オプションを利用することで管理者権限なしにインストールできるらしい（要検証)
```shell
py -m pip install (パッケージ名) --user
```

 * --user オプションの意味
     * **-user** を追加することで、「管理者権限が不要なフォルダ」にパッケージをインストールするらしい。
     *  [参考:Python：pip における管理者権限と user install](https://pyteyon.hatenablog.com/entry/2019/05/24/003924 "")

###### --user オプションを試してみると…
 * --userなしの場合：
     * C:\Users\xxxxx\AppData\Local\Programs\Python\Python312\Scripts
 * --userアリの場合:
     * C:\Users\xxxxx\AppData\Roaming\Python\Python312\Scripts
     * ※別の場所にインストールされたが、ここが管理者権限不要な場所か未確認
     * またインストールした際エラー発生.Pathが通っていないというエラー。
     * >WARNING: The script tqdm.exe is installed in 'C:\Users\xxxxx\AppData\Roaming\Python\Python312\Scripts' which is not on PATH.
     * 以下コマンドエラーは解消("システムの環境変数"の[Path]にフォルダを追加)
     * >$env:PATH += ";C:\Users\xxxxx\AppData\Roaming\Python\Python312\Scripts"
 
## PythonのIDE（統合開発環境）を整える。
Anacondaだと「Jupyter Notebook」だったと思いますが、
その後継という立ち位置の「JupyterLab」あるのでこっちを入れます。

https://jupyter.org/

### JupyterLabをインストール
* pipを利用してインストールします。
```shell
py -m pip install jupyterlab
```
* jupyterlabの起動は、powershellで以下実行。
```shell
jupyter lab
```
ブラウザーが立ち上がります。以上。

### JupyterLabの拡張機能をインストール
あったほうがよさそうなものインストールします。
[参考したサイト：JupyterLabの環境構築+カスタマイズをする](https://yiskw713.hatenablog.com/entry/jupyterlab-setup "")


#### 日本語化
ブラウザで起動したあと設定>Languageを日本語に変更
```shell
py -m pip install jupyterlab-language-pack-ja-JP
```

#### 変数の中身をみることができるように。
右クリック：`Open Variable Inspector`から簡単にみることができる。
```shell
py -m pip install lckr-jupyterlab-variableinspector
```


#### コードのフォーマットを整えてくれる。フォーマッター
Pythonで流行っているらしい`Black`を利用する。
* コードの保存時にformattingを実行するように設定。
・Settingsタブ -> Settings Editor -> Jupyterlab Code Formatterから詳細設定する
・default_formatterを`black`を一番上に。
・下のほうにある、Auto formatters connfig にチェックをいれる。
```shell
py -m pip install black
py -m pip install jupyterlab_code_formatter
```

#### 一番欲しい機能(タブで自動でコード補完してくるなど)
```shell
py -m pip install jupyterlab-lsp
py -m pip install 'python-lsp-server[all]'
```

#### 導入済みの拡張機能をの確認
```shell
jupyter labextension list
```

## これでPython環境構築は終了です。




# おまけ

## 仮想環境の作成(venv)
ターゲットディレクトリに仮想環境を作成
```shell
python -m venv ./myenv23-11
```

仮想環境起動
```shell
python -m venv ./myenv23-11/Scripts/activate
```

パッケージのインストール
```shell
([newenvname])$ pip install [package name]
```

仮想環境の終了
```shell
([newenvname])$ deactivate
```

https://qiita.com/fiftystorm36/items/b2fd47cf32c7694adc2e

https://docs.python.org/ja/3/library/venv.html