Slide 1

Slide 1 text

Pythonランチャーを 使ってみよう 2024/04/14 PyLadies Tokyo @yuuuka

Slide 2

Slide 2 text

自己紹介 @yuuuka ● SIerに新卒未経験で入社して5年 目 ● 2023年6月からPyLadies Tokyo運 営スタッフやってます ● 大きめの噛みつく猫飼ってます ● 業務ではPythonを使用してデータ の集計、分析・可視化をしたりし てます

Slide 3

Slide 3 text

はじめに   注意 PythonランチャーはWindows環境で フル・インストーラ版をインストールしていないと動かせませ ん!! Macの方やMicrosoft store版をインストールしている人 は使えません_(._.)_

Slide 4

Slide 4 text

Pythonランチャーとは Windows プラットフォーム上で複数の Python インストールを管理 し、適切なバージョンの Python インタプリタを実行するためのツー ルです。Python ランチャーは Python をインストールすると一緒に インストールされ、通常は Python のバージョンと関連付けられた 拡張子(.py)の関連付けを行います。 By ChatGPT(GPT-3.5)

Slide 5

Slide 5 text

Pythonランチャーでできること 1. 複数バージョンのサポート 2. スクリプト指定のバージョン管理 3. バージョン指定の実行 4. 環境変数 PYTHONPY

Slide 6

Slide 6 text

Pythonランチャーでできること 1. 複数バージョンのサポート : Windows に複数の Python バージョンがインストールされている場合、 Python ランチャーは各スクリプトがどのバージョンの Python インタプリタを使用するかを選択するため の仕組みを提供します。 2. スクリプト指定のバージョン管理 : スクリプト自体の shebang 行 (例: `#!/usr/bin/env python`) で特定の Python バージョンを指定している場合、 Python ランチャーはそれに従って適切なバージョンの Python インタプリタを選択します。 3. バージョン指定の実行: コマンドラインから直接 Python バージョンを指定して実行することができま す。例えば、`py -3.8 script.py` とすることで Python 3.8 を使用してスクリプトを実行できます。 4. 環境変数 PYTHONPY: 環境変数 PYTHONPY を設定することで、デフォルトの Python バージョンや振る 舞いをカスタマイズすることができます。

Slide 7

Slide 7 text

今回やってみたこと バージョン指定の実行

Slide 8

Slide 8 text

実際に使ってみた 非公式ダウンローダーを使ってインストール $ py --list -V:3.12 * Python 3.12 (64-bit) -V:3.11 Python 3.11 (64-bit) -V:3.10 Python 3.10 (64-bit)

Slide 9

Slide 9 text

Pythonの起動方法 py -(動かしたいバージョン)という感じで”-”の後に動かしたい バージョンを指定して実行するとPythonが起動 $ py -3.12 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 information. >>>

Slide 10

Slide 10 text

Python 3.12でアップデートされたエラーログ の検証(Python 3.11の場合) $ py -3.11 Python 3.11.7 (tags/v3.11.7:fa7a6f2, Dec 4 2023, 19:24:49) [MSC v.1937 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> 故意にNameErrorとSyntaxErrorを出力させてみる

Slide 11

Slide 11 text

Python 3.12でアップデートされたエラーログ の検証(Python 3.11の場合) >>> sys.version_info Traceback (most recent call last): File "", line 1, in NameError: name 'sys' is not defined >>> ①故意にNameErrorを出力させてみる

Slide 12

Slide 12 text

Python 3.12でアップデートされたエラーログ の検証(Python 3.11の場合) >>> print(f"{abc def}") File "", line 1 (abc def) ^^^ SyntaxError: f-string: invalid syntax >>> ②故意にSyntaxErrorを出力させてみる

Slide 13

Slide 13 text

Python 3.12でアップデートされたエラーログ の検証(Python 3.12の場合) $ py -3.12 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 information. >>> 故意にNameErrorとSyntaxErrorを出力させてみる

Slide 14

Slide 14 text

Python 3.12でアップデートされたエラーログ の検証(Python 3.12の場合) >>> sys.version_info Traceback (most recent call last): File "", line 1, in NameError: name 'sys' is not defined. Did you forget to import 'sys'? >>> ①故意にNameErrorを出力させてみる

Slide 15

Slide 15 text

Python 3.12でアップデートされたエラーログ の検証(Python 3.12の場合) >>> print(f"{abc def}") File "", line 1 print(f"{abc def}") ^^^ SyntaxError: f-string: expecting '=', or '!', or ':', or '}' >>> ②故意にSyntaxErrorを出力させてみる

Slide 16

Slide 16 text

それぞれのバージョンのPythonに違うバージョン のライブラリをインストールしてみる ● それぞれのバージョンのPythonにパッケージをインストール する py -(動かしたいバージョン) -m pip install ○○というように指 定することができます。 ● バージョンを指定してライブラリをインストールしたい場合は py -(動かしたいバージョン) -m pip install ○○==(バージョン)と いうように記述すればインストールができます。

Slide 17

Slide 17 text

それぞれのバージョンのPythonに違うバージョン のライブラリをインストールしてみる ● また、該当バージョンのPythonに対応しているパッ ケージがどれか調べたいという場合 py -(動かしたいバージョン) -m pip install ○○== と実行すると対応しているバージョンが出力されま す。

Slide 18

Slide 18 text

numpy 2.0.0b1でアップデートされた機能の検証 (Python 3.11&numpy 1.26.4の場合) $ py -3.11 Python 3.11.7 (tags/v3.11.7:fa7a6f2, Dec 4 2023, 19:24:49) [MSC v.1937 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import numpy as np >>> print(np.__version__) 1.26.4 StringDTypeを使ってみる

Slide 19

Slide 19 text

numpy 2.0.0b1でアップデートされた機能の検 証(Python 3.11&numpy 1.26.4の場合) >>> from numpy.dtypes import StringDType Traceback (most recent call last): File "", line 1, in ImportError: cannot import name 'StringDType' from 'numpy.dtypes' (C:\Users\yuuuka\AppData\Local\Programs\Python\Python311\Lib\ site-packages\numpy\dtypes.py) >>> StringDTypeを使ってみる

Slide 20

Slide 20 text

numpy 2.0.0b1でアップデートされた機能の検証 (Python 3.12&numpy 2.0.0b1の場合) $ py -3.12 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 information. >>> import numpy as np >>> print(np.__version__) 2.0.0b1 StringDTypeを使ってみる

Slide 21

Slide 21 text

numpy 2.0.0b1でアップデートされた機能の検証 (Python 3.12&numpy 2.0.0b1の場合) >>> from numpy.dtypes import StringDType >>> data = ["this is a longer string", "short string"] >>> arr = np.array(data, dtype=StringDType()) >>> arr array(['this is a longer string', 'short string'], dtype=StringDType()) >>> StringDTypeを使ってみる

Slide 22

Slide 22 text

まとめ ● Pythonランチャーを使えば手軽にPythonのバー ジョンの違いによる動作の検証ができる! ● ライブラリのバージョンの違いによる動作の検証 もできる! ● ただし、ライブラリを複数使うような場合は管理が 手間になるので仮想環境を使った方がよい