初めてのPython
Back
Alt+HOME
C言語とOpenSSLを使って・・とのめり込んではみたものの、何分にも暗号化でぴったり要望に合わせるには勉強不足。そこで本筋であるPythonを使ってサンプルを作ってとChatGPTにお願いしたところ、あっという間に接続先から「HTTP 201」が貰えたと言う話
Pythonは Microsoft Store で検索すると各バージョンの候補が表示されます。
もちろん現時点で最新の Version 3.11 をインストール出来ますが、後で分かったことですが、
includeや
libと言うフォルダが含まれていませんでした。
そこでC言語などからも利用できる様に本家からインストールすることにしました。
目的としては、受信した衛星Telemetryを自力で
SatNOGS DB にアップしてみたいと言うことです。一杯良いソフトは有るのだけれど・・。
本体及びモジュールのインストールとフォルダにPATHを引く作業
- 上図をクリックすると python.org のトップページが開きます。
[Dounloads] を開き [Windows] → [Stable Releases] から好みのバージョンのインストーラを選択します。
インストーラであればダウンロード後ダブルクリックするだけです。
=MEMO= (2)のパスを引く件についてインストーラにチェックボックスが有ります。その場合(2)は確認のみです。
- [システムの詳細設定] のダイアログを開き、[環境変数] からPATHの新規追加を行います。
C:\Users\USER\AppData\Local\Programs\Python\Python311
一度再起動します。
PS X:\> python -V
Python 3.11.2
と表示されたら準備完了です。(バージョンは2023年3月現在です)
- アプリはWEBに対してHTTPリクエストを送信するため requests モジュールをインストールします。
PS X:\> pip install requests
Collecting requests
Downloading requests-2.28.2-py3-none-any.whl (62 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.8/62.8 kB 1.7 MB/s eta 0:00:00
Collecting charset-normalizer<4,>=2
Downloading charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl (96 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.7/96.7 kB 5.4 MB/s eta 0:00:00
Collecting idna<4,>=2.5
Downloading idna-3.4-py3-none-any.whl (61 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.5/61.5 kB 3.2 MB/s eta 0:00:00
Collecting urllib3<1.27,>=1.21.1
Downloading urllib3-1.26.15-py2.py3-none-any.whl (140 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 140.9/140.9 kB 4.2 MB/s eta 0:00:00
Collecting certifi>=2017.4.17
Downloading certifi-2022.12.7-py3-none-any.whl (155 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 155.3/155.3 kB 4.7 MB/s eta 0:00:00
Installing collected packages: urllib3, idna, charset-normalizer, certifi, requests
Successfully installed certifi-2022.12.7 charset-normalizer-3.1.0 idna-3.4 requests-2.28.2 urllib3-1.26.15
[notice] A new release of pip available: 22.3.1 -> 23.0.1
[notice] To update, run: python.exe -m pip install --upgrade pip
- ついでにPIPのアップデートも知らせてくれているので実行しておきます。
PS X:\> python -m pip install --upgrade pip
Requirement already satisfied: pip in c:\users\yosh\appdata\local\programs\python\python311\lib\site-packages (22.3.1)
Collecting pip
Downloading pip-23.0.1-py3-none-any.whl (2.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 1.3 MB/s eta 0:00:00
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 22.3.1
Uninstalling pip-22.3.1:
Successfully uninstalled pip-22.3.1
Successfully installed pip-23.0.1
作成したアプリを EXE化 するために PyInstaller をインストールする
- Python環境を持っている人向けには無用ですが、配布するには便利なようです。
PS X:\> pip install pyinstaller
Collecting pyinstaller
Downloading pyinstaller-5.9.0-py3-none-win_amd64.whl (1.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 8.0 MB/s eta 0:00:00
Requirement already satisfied: setuptools>=42.0.0 in c:\users\yosh\appdata\local\programs\python\python311\lib\site-packages (from pyinstaller) (65.5.0)
Collecting altgraph
Downloading altgraph-0.17.3-py2.py3-none-any.whl (21 kB)
Collecting pyinstaller-hooks-contrib>=2021.4
Downloading pyinstaller_hooks_contrib-2023.1-py2.py3-none-any.whl (256 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 256.8/256.8 kB 8.0 MB/s eta 0:00:00
Collecting pefile>=2022.5.30
Downloading pefile-2023.2.7-py3-none-any.whl (71 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 71.8/71.8 kB ? eta 0:00:00
Collecting pywin32-ctypes>=0.2.0
Downloading pywin32_ctypes-0.2.0-py2.py3-none-any.whl (28 kB)
Installing collected packages: pywin32-ctypes, altgraph, pyinstaller-hooks-contrib, pefile, pyinstaller
Successfully installed altgraph-0.17.3 pefile-2023.2.7 pyinstaller-5.9.0 pyinstaller-hooks-contrib-2023.1 pywin32-ctypes-0.2.0
- test.pyの実行ファイルを作成するには次の様にします。
PS X:\python> pyinstaller test.py --onefile
PS X:\python> ls
Directory: X:\python
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2023/03/29 5:09 build
d---- 2023/03/29 5:34 dist
-a--- 2023/03/29 5:33 1460 test.py
-a--- 2023/03/29 5:33 852 test.spec
PS X:\python> cd .\dist\
PS X:\python\dist> ls
Directory: X:\python\dist
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2023/03/29 5:34 11346223 test.exe
PS X:\python\dist> .\test.exe
- 実行ファイル化する場合のオプション
- --onefile
- ファイルを一つにまとめる。
- --noconsole
- 実行時にコンソールの表示を制限する。GUIの場合は基本的に指定。
- --debug all
- デバッグ時ログを出力。
- --clean
- キャッシュを削除。リリース時は指定する。
- --icon
- アイコンファイルのパスを指定。
- --name
- 実行ファイル名を指定 filename.exe
GUIのためのTkinterとその他モジュール
- 試しにTtkinterとして ttkbootstrapをインストール
pip install ttkbootstrap
Collecting ttkbootstrap
Downloading ttkbootstrap-1.10.1-py3-none-any.whl (133 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.0/133.0 kB 4.0 MB/s eta 0:00:00
Collecting pillow>=8.2.0
Downloading Pillow-9.4.0-cp311-cp311-win_amd64.whl (2.5 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.5/2.5 MB 9.9 MB/s eta 0:00:00
Installing collected packages: pillow, ttkbootstrap
Successfully installed pillow-9.4.0 ttkbootstrap-1.10.1
- ラベル・ボタンなどの色指定
- background, bg
- 背景色を指定
- foreground, fg
- 文字色を指定
- highlightbackground, highlightcolor
- フォーカスが外れた時、フォーカスした時の枠線色指定
- disabledbackground, disabledforground
- 無効状態時の背景色、文字色を指定
- activebackground, activeforeground
- ボタンをクリックした時の背景色、文字色を指定
- readonlybackground
- 読み取り専用時の背景色を指定
- selectbackground, selectforeground
- 選択状態の時の背景色、文字色を指定
*argsと**kwargsって何?
- 不特定多数の引数を受けられる仕組みにするのが *args **kwargs
関数を呼び出す時に、コンマ区切りで複数(多数)の引数を渡すと、関数内ではタプル(Tuple)として扱われるのが *args。
また、[key1=value1, key2=value2, ・・・・・] のように key と value を組み合わせて索引のように扱うのが **kwargs です。
多分、argsはarguments、kwargs は key word arguments と読むのではと思っています。
Python におけるタプル
Python におけるタプルは、任意の要素数の値をまとめてあたかもひとつの値のように扱う機能である。
タプルでは要素の型 (数値型、文字列型など)の同一性は不問であり、たとえば ('A', 1) という文字列と整数をひと塊として変数に代入できる。
x = ('A', 1)
Pythonはゼロまたはひとつの要素となるタプルも認めており、とくに1要素のタプルはプログラミング言語としては珍しい。
普通、そのようなものは計算の優先順位を変更するため、または1引数関数の引数を括るための括弧と区別できないからである。
Pythonの場合、要素に続けてカンマを置くことで識別する。カンマを忘れるとタプルとして認識できなくなってしまうということでもある。
x = (1,) # 1要素の場合。()内末尾のカンマに注意
y = () # 0要素の場合。関数型言語ではユニットとして知られているが、
タプルとは別に語られる
タプルは関数の返り値として使うこともできる。これによって、複数の値を返す関数を実現することができる。
def func():
return ('A', 1)
x = func() # x には ('A', 1) が入る
また、タプルは下記のようにして個別の要素を分離する。
x = ('A', 1)
(a, b) = x # a には 'A'、b には 1 が入る
ウィキペディアを引用させて戴きました。
Back
Alt+HOME
この 作品 は
クリエイティブ・コモンズ 表示 - 非営利 - 改変禁止 4.0 国際 ライセンス
の下に提供されています。
English
Powered by