psp2

day01: 開発環境

プログラミングの一番の基盤は,IDE(開発環境).IDE とは

1. Code Editor
    - ソースコードを書くソフトウェア
2. Debugger(Linter, Formatter, Tester)
    - ソースコードのバグを発見するソフトウェア
    - Linter(リンター): ソースコードの文法チェック
    - Formatter(フォーマッター): 文法に沿ったソースコードの整然化
    - Tester(テスター): プログラムの動きを確認するためのテスト(仮のデータ入力と想定される出力)を走らせるしくみ
3. Interpreter(Compiler,Builder)
    - ソースコードを実行するソフトウェア

の 3 種のソフトウェアです.

1.Python

「Python」(パイソン)には 2 つの意味があります.(蛇の種類の意味以外に)

  1. プログラミング言語
  2. インタプリタ・コマンド(実行ファイル)

本来は上記 1 のプログラミング言語である Python 語のことですが,この Python 語で書かれたソースコードを読んでアプリケーション化するコマンドもまた python と読んでいます.

Python コマンドもまたアプリケーションで,元はソースコードがあり,そのソースコードをビルドすることで python コマンドが生成されています.そのソースコードは,さまざまなプログラミング言語で書かれたバージョンがあり,もっとも有名なものは CPython,C 言語というプログラミング言語で書かれたものです.その他には Java 言語で書かれた JPython などもあります.

ともあれ,自分の PC に python コマンドをインストールしましょう.

…とその前に,すでにインストールしているかも.でも,本当に今もそのままですか?

今後のプログラミング演習 Ⅱ の進行のために,全員の開発環境を同じものにしたく,まず,現在インストールしてあるすべての python コマンドをアンインストールしたいと思います.

1.1. python コマンドの種類

windows で,python とコマンドラインで打ったときに呼び出されるpython.exeは,典型的には次の 4 つです.

  1. MS Python(ダミー): Windows に最初から入っているもの
  2. MS python : Microsoft Store から入手したもの
  3. Anaconda python : Anaconda に付属してきたもの
  4. 素 python : 公式サイト python.org から入手したもの

これらは,インストール先をいじっていなければ,デフォルトのインストール先が決まっています.

0. MS Pyton(ダミー)

%LOCALAPPDATA%\Microsoft\WindowsApps\python.exe

1. MS Python 本体

%LOCALAPPDATA%\Microsoft\WindowsApps\PythonSoftwareFoundation.Python(Version)***\python.exe

2 の Anaconda python

%USERPROFILE%\anaconda3\Scripts\python.exe

3 の素 Python

%LOCALAPPDATA%\Programs\Python\Python(Version)\python.exe

コマンドプロンプトで,それぞれの場所,

> %LOCALAPPDATA%\Microsoft\WindowsApp\python.exe

などと打ってみてください.

ここで出てきた種類だけの Python があなたの PC にはインストールされているということです.

では,この python たちをアンインストールします.

  1. 上記の確認作業で,Anaconda python の存在が確認された人は,最初に anaconda をアンインストールします.Anaconda をインストールした覚えのない人も念の為に次のコマンドをどこかで動かしてください.

    > conda install -c anaconda anaconda-clean
    > anaconda-clean
    
  2. 一般的に Windows でインストールしたものはギアアイコンの「設定」から「アプリと機能」,「python」を検索すると出てきます.ここでアンインストールを選びます.複数見つかることもあります.

  3. 環境変数の PATH に python に関する記述があれば,その部分を削除します.

1.2. python コマンドのインストール

ぶっちゃけ何でも構いませんが,皆と同じ環境にしたいなら,演習 Ⅱ では「素 python」をおすすめします.すなわち公式サイト からインストールしてください.

その際に PATH の設定を加えるか聞かれるかもしれませんが,「いいえ」です.また,インストール後に手動で PATH の設定を加える必要もありません.

windows の人は,今後,python コマンドはpythonではなく,pyを使います.

mac の人向けのお話

mac の人は,最初から python が入っています.

(ここは上級者向け)

2. vscode

Visual Studio Code

Microsoft Windows には昔々から,Visual Studio という IDE(頭で紹介したエディタ・デバッガ・インタプリタ)すべての入ったソフトウェアがありますVisual Studio.ただし,WindowsOS 専用です.また,とても大きなソフトウェアであり,手軽に扱えるものではありません.

Visual Studio Code (以下,vscodecode)は,そのエディタに特化したものとなります. ただし,拡張機能を多く備えることができ,エディタでありながら,デバッグ,ビルドも可能なものとなっています.さらに,WindowsOS だけでなく,MacOS,LinuxOS でも同じように使用できます.

2.1. vscode の使い方

vscode はエディタですが,プログラミングに特化したエディタです.

プログラミングでは,あるアプリケーションを作ろうとなった場合に, 「プロジェクト」と呼ぶフォルダを作り,その中にソースコードやらリソースファイル(アイコンや画像や音楽ファイルなど),説明書(Readme),ライセンス(License)を入れます.

vscode では,ファイルを一つ一つ開くのではなく,この「プロジェクト」のフォルダを開きます.

フォルダを開いたあと,そのフォルダルート(根っこ)を起点として,その下にあるソースコードを編集したり,ファイルを加えたり削除したりの整理をしたりします.

2.2. vscode の拡張機能

以下の拡張機能をインストールしてください.

日本語パック拡張機能

Python 用拡張機能

3. poetry

演習 Ⅰ や Web 上のいろんなサイトで,numpy その他のパッケージをインストールする際にpipcondaを使っているかもしれませんが,この演習 Ⅱ ではpoetry を使います.

まず,poetry をインストールしましょう.

PS > (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
PS > [System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\AppData\Roaming\Python\Scripts;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")

mac や linux の人は,

> curl -sSL https://install.python-poetry.org | python3 -

3.1. poetry の使い方

poetry は単なるパッケージインストーラではなく,むしろ「プロジェクト」フォルダのマネージャです.

何はともあれ,最初に次のようにしてください.どのフォルダでもいいです.

> poetry config virtualenvs.in-project true
> poetry config virtualenvs.options.no-pip true
> poetry config virtualenvs.options.no-setuptools true

(上記は,プロジェクトのライブラリ置き場を,プロジェクト内の .venv というフォルダに置く,という設定です.この設定をしない場合は,デフォルトで,ユーザのVirtualenvsというフォルダの下にプロジェクトごとの env が置かれます)

3.2. プロジェクトを始めるときには,

プロジェクトとは,パッケージとほぼ同じ意味と考えても結構です.配布(提出)するモジュールが梱包されたディレクトリです.

0. プロジェクトの親ディレクトリを作ります.

これから,さまざまなプロジェクトを作るので,それらを置くための親となるディレクトリを作ります.エクスプローラで作ってもいいでしょう.ディレクトリの名前は何でもいいです.例えば psp2 とか.

1. プロジェクトの親ディレクトリに移動

たとえばディレクトリの場所が C:\Users\helmenov\Documents\psp2 ならば,

> cd C:\Users\helmenov\Documents\psp2

2. プロジェクトを作る.

新しくプロジェクトを作ります.たとえば課題1用に, kadai01 なら,

> poetry new kadai01

と打ちます.すると,いろいろ聞かれますが,適切に答えると,kadai01 というディレクトリが作られます.

そのディレクトリに入ると,いろいろなものができています.

kadai01
├── README.md
├── kadai01
│   └── __init__.py
├── pyproject.toml
└── tests
    └── __init__.py

kadai01ディレクトリの中にさらに kadai01 というディレクトリができています.この深い位置の方の kadai01 が配布されるパッケージです.このディレクトリの中にあなたがモジュールを作成します.すでに__init__.py というものがありますが,とりあえず今は気にせずそのままに.

pyproject.tomlというファイルがあります.これが「あなたの作ったパッケージを使うためにあらかじめインストールしていなければならないパッケージのリスト」です.さらに,このファイルにはパッケージのバージョンを書きます.

他に, README.mdというファイルがありますが,これはあなたの作ったパッケージの説明書です.

testsというディレクトリは,あなたの作ったパッケージをテストするためのモジュールを置きます.

3. プロジェクトに必要な外部パッケージのインストール

実は,上記で作ったプロジェクトですが,他のプロジェクトでインストールした外部パッケージを使えません.

外部パッケージはプロジェクト毎に入れ直してください.

外部パッケージのインストールは,

> poetry add 外部パッケージ名

でおこないます.(pip installではありません)

ちなみに,厳密には「プロジェクトに必要な外部パッケージ」には2種類あり,

どちらもインストールは,poetry add でインストールしてもいいのですが,後者は自作パッケージ配布のときには不要なパッケージです.

なのでpoetry add --group=devでインストールしておくと,配布物から取り除かれます.

ちなみに,不要になった外部パッケージは,

> poetry remove 外部パッケージ

で削除できます.

3.3. 自作パッケージの配布

作った自作モジュールを詰め込んだ自作パッケージを配布(提出)したいときは,まずpyproject.toml[tool.poetry]versionの数値を大きくします.

そのあと,

> poetry build

すると,dist/kadai01-0.1.0-py3-none-any.whlみたいのができます.これを配布(提出)します.

4. vscode でコーディング

まず,それぞれのプロジェクトで,

> poetry add ipykernel --group=dev

してください.

その後,vscode でプロジェクトを開き,python ソースコードを編集します.

インタプリタを聞かれます.このときには,./.venv/bin/pythonを選ぶようにします. (たいていは,自動的にインタプリタが選ばれます)

5. jupyterhub の利用

演習室の JupyterHub を使うこともできます.ただし,学外からは使えません.

学内であれば,まずEteks で使う演習室 PC を決めます.使う PC が起動していない場合は新たに起動してください.

起動していることが確認できたら,つなぐ演習室 PC の JupyterHubに WebBrowser でアクセスします.

ディレクトリの移動は,エクスプローラでおこないます.

ファイルリストの上に ■ / … / k00 / tests / のような表示があると思いますが,そのが所謂ホームディレクトリで,演習室 PC のあなたのディレクトリの根っこです.をクリックすると,その根っこに移動します.

ファイルリストから移動したいディレクトリをクリックすれば,そのディレクトリに移動します.

移動先のディレクトリの下のファイルリストが表示されている状態で,右側の Launcher で操作します.

poetry をインストールしてみましょう.現在開いているディレクトリがどこでも構いません.

Launcher の Other の Terminal を開きます.

[sonoda@bes-ex01 ~] $ □

のようになっています.ここで,

[sonoda@bes-ex01 ~] $ python -m pip install poetry

と打って実行すると,ズラーとインストール処理が行われ,最後に

Successfully installed poetry-1.8.2
[sonoda@bes-ex01 ~] $ □

となってインストール終了です.試しに

[sonoda@bes-ex01 ~] $ poetry help

で poetry のヘルプが表示されます.

あとはほぼ上記の自分 PC での操作と同じ(poetry configを忘れずに)ですが,

vscode のときにインタプリタを聞かれたら .venv/bin/pythonを選べ

に対応するインタプリタ設定が必要です.

  1. Other/Terminal で Python を起動する場合

    1. まず,

      [sonoda@bes-ex01 k00] $ poetry shell
      

      と打つと

      (k00-py3.8) [sonoda@bes-ex01 k00]$
      

      のようになるかと思います.

    2. この状況で python を動かせば,自分で入れた site-packages が反映されます.

  2. Notebook を使いたい場合

    1. 初めから用意されているpython3というカーネルには,自分で入れた site-packages が反映されません.よって新たにカーネルを作ります.
    2. Other/Terminal にて

      [sonoda@bes-ex01 k00] $ poetry add ipykernel --group=Dev
      

      で カーネル作成パッケージをインストールし,それを使ってカーネルを作ります.カーネル名を指定します.たとえばk00なら

      [sonoda@bes-ex01 k00]$ poetry run ipython kernel install --user --name=k00
      
    3. Launcher を開くと,Notebook に自分で作ったカーネルが追加されています.そのカーネルで Notebook を作れば,そこでは自分の入れた site-packages が使えます.
    4. ちなみに自分の作ったカーネルのリストは

      [sonoda@bes-ex01 k00] $ jupyter kernelspec list
      
    5. ちなみに自分の作ったカーネルを削除するときは,

      [sonoda@bes-ex01 k00] $ jupyter kenelspec uninstall k00