Day After Day
tsurezure naru mamani...
ANOTHER DECADE

from 2022 when it's begining after/with CORONA Virus.

初めてのPython

3月
28
2023
Back
Alt+HOME


C言語とOpenSSLを使って・・とのめり込んではみたものの、何分にも暗号化でぴったり要望に合わせるには勉強不足。そこで本筋であるPythonを使ってサンプルを作ってとChatGPTにお願いしたところ、あっという間に接続先から「HTTP 201」が貰えたと言う話

Pythonは Microsoft Store で検索すると各バージョンの候補が表示されます。 もちろん現時点で最新の Version 3.11 をインストール出来ますが、後で分かったことですが、includelibと言うフォルダが含まれていませんでした。 そこでC言語などからも利用できる様に本家からインストールすることにしました。

目的としては、受信した衛星Telemetryを自力で SatNOGS DB にアップしてみたいと言うことです。一杯良いソフトは有るのだけれど・・。

本体及びモジュールのインストールとフォルダにPATHを引く作業


  1. 上図をクリックすると python.org のトップページが開きます。

  2. [Dounloads] を開き [Windows] → [Stable Releases] から好みのバージョンのインストーラを選択します。 インストーラであればダウンロード後ダブルクリックするだけです。

    =MEMO= (2)のパスを引く件についてインストーラにチェックボックスが有ります。その場合(2)は確認のみです。

  3. [システムの詳細設定] のダイアログを開き、[環境変数] からPATHの新規追加を行います。

  4. C:\Users\USER\AppData\Local\Programs\Python\Python311

    一度再起動します。

    PS X:\> python -V
    Python 3.11.2
    

    と表示されたら準備完了です。(バージョンは2023年3月現在です)

  5. アプリはWEBに対してHTTPリクエストを送信するため requests モジュールをインストールします。

  6. 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
    

  7. ついでにPIPのアップデートも知らせてくれているので実行しておきます。

  8. 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 をインストールする


  1. Python環境を持っている人向けには無用ですが、配布するには便利なようです。

  2. 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
    


  3. test.pyの実行ファイルを作成するには次の様にします。

  4. 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
    


  5. 実行ファイル化する場合のオプション

  6. --onefile
    ファイルを一つにまとめる。
    --noconsole
    実行時にコンソールの表示を制限する。GUIの場合は基本的に指定。
    --debug all
    デバッグ時ログを出力。
    --clean
    キャッシュを削除。リリース時は指定する。
    --icon
    アイコンファイルのパスを指定。
    --name
    実行ファイル名を指定 filename.exe

GUIのためのTkinterとその他モジュール


  1. 試しにTtkinterとして ttkbootstrapをインストール

  2. 
    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
    

  3. ラベル・ボタンなどの色指定
  4. background, bg
    背景色を指定
    foreground, fg
    文字色を指定
    highlightbackground, highlightcolor
    フォーカスが外れた時、フォーカスした時の枠線色指定
    disabledbackground, disabledforground
    無効状態時の背景色、文字色を指定
    activebackground, activeforeground
    ボタンをクリックした時の背景色、文字色を指定
    readonlybackground
    読み取り専用時の背景色を指定
    selectbackground, selectforeground
    選択状態の時の背景色、文字色を指定

*argsと**kwargsって何?


  1. 不特定多数の引数を受けられる仕組みにするのが *args **kwargs

  2. 関数を呼び出す時に、コンマ区切りで複数(多数)の引数を渡すと、関数内ではタプル(Tuple)として扱われるのが *args。 また、[key1=value1, key2=value2, ・・・・・] のように keyvalue を組み合わせて索引のように扱うのが **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