WindowsでのオススメのPython環境 2024版

2024-06-05(水)

普通にPython.orgからダウンロードして入れましょうという話。

これまでオススメのPython環境はAnacondaだったもののNavigatorでトラブルが発生するとかなり面倒だったり,condaがいつまでたっても依存関係を解決してくれなかったりとイマイチな状況が増えてきたのと,結局のところpip使わないで済むことは無いのでcondaではなくpipで統一してしまった方が楽だというのが動機でpy.exeの存在が決定的。macOSでもAnacondaではなく標準+pyenv+venvになってる。

1. Pythonのインストール

公式の配布サイトから3.11.xをダウンロードして実行。

インストーラの画面は特に弄らずそのままInstall Nowを選ぶ。

None

"Setup was successful"と出たらインストール完了。

None

そのウィンドウにDisable path length limitという表示があったらそれを選択する。Windowsに限らず環境変数PATHという概念があり,そこに羅列したフォルダ内のプログラムはどこからでも呼び出せる,というOSの仕組みがある。macOSやUnixは問題ないのだが,WindowsはC:\Program FilesまたはC:\Program Files(x86)みたいなアホ長いフォルダが標準的なインストール先なのでPATHに羅列しようとすると凄まじい長さになるのが明白にもかかわらず,環境変数に設定できるのが260文字までというアホな制限がある。それを回避する方法がこの選択肢。

Windowsメニューの「すべてのアプリ」にPythonフォルダが出来ている。

None

黒っぽいアイコンのPython 3.xx(64-bit)を選ぶとコマンドプロンプトの黒い画面が開き

>>

のような入力待ち(プロンプトと呼ぶ)になるのでquit()と打って一旦終了させる。

2. パッケージのインストール

Windowsメニューの検索にcmdと打ってコマンドプロンプトを起動する。

pipのアップグレード

Pythonのインストール時にpy.exeというプログラムもインストールされていて,自動的に「今使うPython」を呼び出す仕組みになっている。Pythonはパッケージ(機能)を呼び出すときに

python -m パッケージ名 パッケージのオプション

とするか,パッケージによっては

パッケージ名 パッケージのオプション

のような感じで起動するのだが,後者はWindowsだと手間のかかるPathの設定が必要なので,py.exeと前者を組み合わせて使う。例えばよく

pip install -U pip

と実行しろと説明しているサイトが多いが,「パッケージ管理のpipを使ってpip自身をアップグレード(-U)しろ」というコマンドは

py -m pip install -U pip

と書く(.exeは付けなくて良い)。ということでまずは↑のコマンドをコマンドプロンプトで実行してpipをアップグレードする

基本環境の作成 (venv)

Pythonのパッケージでインストールするもののなかで,py ナントカではなくナントカのようにコマンドとしてインストールされるものもあるが,それを有効にするにはC:\Users\username\AppData\Local\Programs\Python\Python311\Scriptsのような環境依存の場所へのPathの設定が必要になる。その代わりにvenvで基本環境も仮想環境として作成してしまう。

ここではAnacondaを真似てbaseにすると紛らわしいのでdefaultという名前の仮想環境を作る。

py -m venv default

以後,Pythonを使うときにはコマンドプロンプトを開き

default\Scripts\activate

を必ず実行してから使う。

(default) C:\Users\username>みたいなプロンプトになる。 これの利点はactivateを実行するとその仮想環境のScriptsにPathが通ることで,たとえばipythonをインストールした後で

py -m IPython

とせずに

ipython

で起動できる。※まだインストールしてない (ipythonがScriptsにインストールされる)

無難なパッケージのインストール

何をやるにしろあった方が便利なものを一通り入れておく。コマンドプロンプトに以下をコピペする。(^は長いコマンドに途中改行させる方法)

py -m pip install jupyter notebook ipython opencv-python ^
 opencv-contrib-python numpy scipy scikit-image scikit-learn ^
 pillow pandas matplotlib seaborn mediapy pyqt5 ^
 qtconsole jupyterlab
  • ipython: 普通のpythonより親切なPythonインタプリタIPython
  • jupyter: NotebookとLabで使うエンジン
  • jupyterlab: Jupyter Lab。MATLABっぽいNotebook+コマンド+インタプリタな何でもあり版な開発環境
  • matplotlib: グラフや画像の表示に使う可視化
  • mediapy: Notebookで画像や動画を楽に表示できる
  • notebook: Jupyter Notebookというブラウザベースで動くPythonの開発環境(ノートを取りながらPythonを実行できるので人気)
  • numpy: 行列演算ライブラリ
  • opencv-python: コンピュータビジョンライブラリOpenCV
  • opencv-contrib-python: OpenCVの正式版には含まれていない機能の追加
  • scipy: 科学技術系ライブラリ
  • scikit-image: SciPy toolkit=scikitでscipyのサブモジュールの一つで画像処理関係
  • scikit-learn: scipyのサブモジュールの一つで機械学習関係
  • pandas: データ解析でR言語っぽい動きをする
  • pillow: PIL(Python Imaging Library)という古くからある画像処理ライブラリから派生した現代版で呼び出しはPILとして互換性が保てる
  • pyqt5: Qt(キュート(Cute)と読む)のPython版でなぜかパイキューティーと読まれる。GUIアプリのベースとなるものでqtconsoleで使う
  • qtconsole: コマンドプロンプトでもIPythonは使えるが,こっちだと画像が表示できる。
  • seaborn: 可視化でmatplotlibよりダサくない

が入れるもの。

default\Scriptsフォルダには下記がインストールされる。

 C:\Users\username\default\Scripts のディレクトリ

[.]                        [..]                       activate                   activate.bat
Activate.ps1               deactivate.bat             f2py.exe                   fonttools.exe
httpx.exe                  imageio_download_bin.exe   imageio_remove_bin.exe     ipython.exe
ipython3.exe               jlpm.exe                   jsonpointer                jsonschema.exe
jupyter-console.exe        jupyter-dejavu.exe         jupyter-events.exe         jupyter-execute.exe
jupyter-kernel.exe         jupyter-kernelspec.exe     jupyter-lab.exe            jupyter-labextension.exe
jupyter-labhub.exe         jupyter-migrate.exe        jupyter-nbconvert.exe      jupyter-notebook.exe
jupyter-qtconsole.exe      jupyter-run.exe            jupyter-server.exe         jupyter-troubleshoot.exe
jupyter-trust.exe          jupyter.exe                lsm2bin.exe                normalizer.exe
pip.exe                    pip3.11.exe                pip3.exe                   pybabel.exe
pyftmerge.exe              pyftsubset.exe             pygmentize.exe             pyjson5.exe
pylupdate5.exe             pyrcc5.exe                 python.exe                 pythonw.exe
pyuic5.exe                 pywin32_postinstall.py     pywin32_testall.py         qtpy.exe
send2trash.exe             tiff2fsspec.exe            tiffcomment.exe            tifffile.exe
ttx.exe                    wsdump.exe                 [__pycache__]

pip, ipython,jupyter-*あたりがよく使いそうなもの。

3. IPythonを使ってみる

ipython

で起動する。exit, quitで終了できる(標準のインタプリタと異なり括弧()が要らない)

ちなみに

py -m IPython

のようにPythonのモジュールとしてインストールされるものはScripts内のコマンドを使わなくてもpyに-mを付けてモジュール名を指定すれば使える(quitで終了)

%edit とエディタの変更

IPythonで

%edit hello.py

のように%editの後にファイル名を付けるとMagicコマンドでエディタが起動して,エディタを閉じるとそのファイルが実行される。 デフォルトはnotepad(メモ帳)で微妙な使い心地なので変更したい場合は下記のようにする。

Windowsメニューから使いたいエディタのアイコンを右クリックして「詳細」→「ファイルの場所を開く」を選ぶ。ショートカットが置かれた場所のエクスプローラーが開くので,そのアイコンを右クリックして「プロパティ」を選ぶ。「リンク先」をコピーしておく。

コマンドプロンプトで

ipython profile create

と打つと

[ProfileCreate] Generating default config file: WindowsPath('C:/Users/username/.ipython/profile_default/ipython_config.py')
[ProfileCreate] Generating default config file: WindowsPath('C:/Users/username/.ipython/profile_default/ipython_kernel_config.py')

と表示されるので最初の方を編集する。これもコマンドプロンプトで

notepad .ipython\profile_default\ipython_config.py

と打つ。するとIPythonの設定ファイルが開くので,editorという単語を検索する。このファイルは#が先頭にあるとコメントアウトされた状態なので,そこを編集する。

# c.TerminalInteractiveShell.editor = 'notepad'

とある'notepad'のところにさっきコピーしたリンク先を貼り付け,先頭の#とスペースを消してからバックスラッシュか¥を半角のスラッシュ/に書き換える。

c.TerminalInteractiveShell.editor = "C:/Users/username/AppData/Local/Programs/Microsoft VS Code/Code.exe"

のような感じになる。「ファイル」「保存」して再びコマンドプロンプトでIPythonを起動してから

%edit hello.py

でvscodeが開くので

print('Hello, world!')

とでも書いて保存してvscodeを終了すると,IPython上で実行される。

QtConsole

qtconsoleの方が応用が効くので

jupyter-qtconsole

とすると、QtのUIを使ったIPythonが使える。ただし、mediapyのshow_*はインライン表示に使えないのでmatplotlibのimshowを使う必要がある。

from urllib.request import urlretrieve
urlretrieve('https://www.python.org/static/img/python-logo@2x.png',
 'python-logo.png')

で入手したファイルをインライン表示するには

import matplotlib.pyplot as plt
import mediapy as media
plt.imshow(media.read_image('python-logo.png'))

とする。(matplotlibを使った場合)

import PIL
PIL.Image.open('python-logo.png')

も表示できる。(PILを使った場合)

None

from IPython.display import display, Image
display(Image('python-logo.png'))

だとIPythonかJupyter Notebook専用になるが表示できる。

None

from IPython.display import display
import mediapy as media
display(media.read_image('python-logo.png'))

だとndarrayと見做されて生データがドバーっと出る。

None

IPython同様にquitでウィンドウが閉じる。

これもデフォルトのエディタの設定がnotepadになっているので変更が必要で,コマンドプロンプトで

jupyter-qtconsole --generate-config

で設定ファイルを .jupyter\jupyter_qtconsole_config.py に生成できるのだが,c.JupyterWidget.editor = 'notepad'を弄っても反映されない。

4. Jupyter Notebookを使ってみる

コマンドプロンプトでJupyter Notebookのサーバーを起動する命令なのだがデフォルトでそのページを開くようOSに命令を出すのでブラウザが起動する。

  1. コマンドプロンプトを起動
  2. Jupyter Notebookのサーバーを起動
  3. 色々作業
  4. Notebookで「閉じて終了」を選ぶ
  5. コマンドプロンプトでCtrl+Cを2回入力してサーバーを停止

という流れになる。当たり前だがブラウザが開いた後にコマンドプロンプトを閉じると使えなくなるので注意。

jupyter-notebook

でブラウザが起動しJupyter Notebookが使える。 Newボタンを押すとPython3が出るので選択するとNotebookが新規作成される。

Notebookはセルという単位で分割されていて,セルにはコードセルとMarkdownセルがある(MarkdownはWikipediaとかを参照)。

Markdownで説明を書き,その下にコードセルでPythonプログラムを書くような流れで「実験ノート」が作れる。Markdownの表示やコードの実行はCtrl+EnterまたはShift+Enter。

from urllib.request import urlretrieve
urlretrieve('https://www.python.org/static/img/python-logo@2x.png', 'python-logo.png')
import mediapy as media
media.show_image(media.read_image('python-logo.png'))

None

保存した後で,ブラウザのJupyter NotebookでSaveで保存してからClose and Haltでタブを閉じる(ブラウザのタブを閉じてもPythonのプロセスは停止してくれない。ファイル一覧で緑色のアイコンがそれを意味する)。 その後File->Shut downを選ぶか,コマンドプロンプトで「Ctrl+C」を打ってJupyter Notebookのサーバーを終了させる。

ちなみに保存されるのは.ipynb(IPython Notebookと名乗っていた時代の名残り)という拡張子のファイルで,Visual Studio CodeやGoogle Colaboratoryでも開ける。

NewボタンではText Fileを選ぶとテキストエディタとなり,テキストエディタのFile-Renameで.py付きのファイル名(例えばHello.py)にするとPython用のハイライト表示エディタになる。また,NewからTerminalを選ぶとコマンドプロンプトの親戚のようなPower Shellが開くので,.pyファイルを編集して

py なんとか.py

みたいにPythonスクリプトを実行できる。

5. Jupyter Labを使ってみる

Notebookと同じノリで起動する。Notebookだとエディタもターミナルもブラウザの別タブになって鬱陶しいが,Jupyter Labは一つのウィンドウに収まる。

サーバーとして起動するのはNotebookと同様で,

jupyter-lab

でブラウザが開き、JupyterLabが表示される。JupyterLabはJupyter Notebookの豪華版という感じで、

  • Notebookでのプログラミング
  • IPythonでのコマンド実行
  • .pyファイルを使ったプログラミング
  • ターミナルでの作業(WindowsだとPowershellがデフォルト)

が可能。

None

とりあえずの開発環境としてはこれが無難。

6. その他

(あくまでもWindowsのマシンで)PythonをLinuxで動かす

WindowsでPython(特に外部パッケージ)を扱うのは今はだいぶ良くなったとはいえ「動いたらラッキー。動かなかったらがんばりましょう」という認識でいた方が良い。できればUbuntu等のLinux系を使う方がトラブルが少ないので,もう少し凝った使い方としては以下がある。

特に深層学習フレームワークを使う場合にはLinux系OSで扱う場合が殆どなので今のうちから慣れておくと良い。

  • WSL2
  • Windows Subsystem for Linuxの略称で,Microsoftが提供していて,Winodws上でまんまLinuxが動くので,Ubuntu等のPython利用の解説がまんま使える
  • NVIDIAがCUDA Driverも出してるのでNVIDIAのGPUを積んだマシンならWSL2上でTensorflowとかPyTorchが使える
  • WSL2+Docker
  • 様々な環境を搭載したコンテナを拾ってきて直ぐに試せるうえにVMと違ってディスク容量をそこまで圧迫しない
  • WSL2+Docker+VSCode
  • Visual Studio CodeはMicrosoft製のテキストエディタだが,拡張機能でコンテナ上の開発環境を使ってプログラミング,とかが楽にできる。
  • VSCodeに慣れると,リモートホスト上のDockerコンテナ上で開発。のようなことも出来る。

他のバージョンのPython

LinuxやmacOSの場合はpyenvという便利な解決法があるのだが,Windowsの場合案外面倒そうなので素直に特定のマイナーバージョンのインストーラをPython.orgから持ってくるのが楽。その上で,

set PY_PYTHON=バージョン

を指定すると,そのコマンドプロンプト上では以後py.exeが勝手にそっちのバージョンを使ってくれる。例えば,3.11と3.10を入れている場合

set PY_PYTHON=3.10

と打てば以降3.10.xが使え,

set PY_PYTHON=3.11

とすれば3.11.xが使える。

仮想環境

ある特定のバージョンのopencv-pythonが必要だが,普段は最新のopencv-pythonを使いたい。とか,requirements.txtで指定されている環境を作りたい。とか,Pythonでのパッケージのバージョン環境は簡単に崩壊する。特に深層学習フレームワークについては後方互換性をバッサリ切っているものが多いので,色々試したい場合には環境を変えて作業した方が安全。

安全な解決方法は

  • 作業ごとにPCを用意する
  • 作業ごとにDockerでコンテナを作る

とかなのだが,Pythonの環境だけ切り替えて使える機能が仮想環境である。condaとかvirtualenvとかがよく使われてきたが,最近は公式のvenvを使うのがトレンドらしい。

自分が作業をするフォルダで

py -m venv 仮想環境名

と打つと,「仮想環境名」のフォルダが出来る。そこのScriptsフォルダにactivate.batがあるのでそれを実行する(PowerShellの場合はActivate.ps1)。上の方で基本環境としてdefaultという名前で作成したが,別の開発環境として例えばvenvHelloみたいな名前にすると,

py -m venv venvHello
venvHello\Scripts\activate

と打つと,プロンプトの頭に(venvHello)のように仮想環境名が表示されるので,あとはpipなりで環境構築すれば良い。

Category: Memo Tagged: Python Windows


Google Cloud Shellの日本語化(gcc込み) 2024版

2024-06-05(水)

Webブラウザ上でコーディングとshellによる操作が可能なCloud Shell Editorがとても便利。 ただし50時間/週の制限がある。

三の字のアイコンからTerminal->new terminalでターミナルを開く。

機能的にはエディタはVS Codeの拡張機能組込み版みたいな感じで,Shellの方はUbuntu 22.04が動いている。

$ cat …

Category: Memo Tagged: C Lecture Debian gcc

Read More

Windows+WSL2でGithubで配布されてるものを試す環境構築

2023-06-21(水)

※この情報は古いです。wikiの方にまとめました

1. WSL2のインストール

Microsoftのサイトの説明に従いWSL2を入れる。

PowerShellを管理者権限で起動して

wsl --install

ここでWSLは既に入っていてディストリビューションがどうこうと出てきたら ```PowerShell! wsl --install -d Ubuntu

としてUbuntuを入れる

```bash
Ubuntu は既にインストー …

Category: Memo Tagged: Python Ubuntu WSL2 Github

Read More

Windows環境でGitとvenvを使ってみる

2023-05-25(木)

前回のWindowsでのPython環境構築をやった続き。

やること

  • gitコマンドを使ってGitHubからソースを持ってくる
  • venvで専用の環境を作って動かす

Gitについて雑な説明

Gitは何かしらのプロジェクトで作成したプログラムのソース(とデータ)を管理するツールで,GitHubはGitに対応したサーバーを提供するサービス。程度の認識でよい。プログラムを作ってる …

Category: Memo Tagged: Python Windows

Read More

WindowsでのオススメのPython環境

2023-05-21(日)

普通にPython.orgからダウンロードして入れましょうという話。

これまでオススメのPython環境はAnacondaだったもののNavigatorでトラブルが発生するとかなり面倒だったり,condaがいつまでたっても依存関係を解決してくれなかったりとイマイチな状況が増えてきたのと,結局のところpip使わないで済むことは無いのでcondaではなくpipで統一してしまった方が楽だというのが動機でpy.exeの存在が決 …

Category: Memo Tagged: Python Windows

Read More

cx_FreezeでPythonからexeファイル生成

2023-02-16(木)

Pythonはスクリプト記述なので開発環境の無いところで利用しようとすると面倒ごとが多い。 Windowsなら.exe,macOSなら.appに変換するのがよく用いられる手段で,cx_Freezeはその一つ。

Pythonのスクリプトから実行形式を生成できるパッケージで,元のスクリプトにはほぼ手を入れる必要が無さそうなのが良い点。 ただしWindowsならWindows,macOSならmacOSでの作業が必要。クロスプ …

Category: Memo Tagged: Windows macOS Python cx_Freeze

Read More

Windows11 Edu.でのローカルID

2023-02-15(水)

初見殺しのWindows11

Windows11は初期セットアップではMicrosoft Accountがないと無理矢理作らされるが,その後はネット切断してから「設定」でアカウント追加を実行すればローカルアカウントが作れる …

Category: Memo Tagged: Windows

Read More
Page 1 of 4

Next »