Sample Python List
- プログラミング言語 Python の学習用
このソフトウェアの使用または使用不可によって、いかなる問題が生じた場合も、著作者はその責任を負いません。バージョンアップや不具合に対する対応の責任も負わないものとします。
- win 版
- vscode を開く
- ctrl + `でターミナルを開いて移動する
- 以下のコマンドを実行
python
- python が入っていないと MicrosoftStore が開いて python のダウンロード画面を出すのでダウンロードする
- 参考サイト
-
win 版
-
仮想環境を動かすため PowerShell の ps ファイルを実行するものがある
-
しかし PowerShell の環境によっては ps ファイルを実行不可能な設定なのもある
-
.\venv\Scripts\activete を実行すると以下のエラーが出た ..\venv\Scripts\Activate.ps1 を読み込むことができません。
-
原因 1: PowerShell の安全装置の一つであるスクリプト不許可の設定がされている
-
どういう事か
- PowerShell の安全装置の一つであるスクリプト不許可の設定がされている
-
原因なのかどうかの確認方法
- PowerShell を実行
- Get-ExecutionPolicy コマンドを実行
- Restricted が表示されたら原因1に該当
-
原因対策
-
PowerShell を管理者として実行
-
以下のコマンドを実行して Y を入力 set-executionpolicy remotesigned
-
Get-ExecutionPolicy コマンドを実行
-
RemoteSigned が表示されたら OK
-
-
参考サイト
-
-
-
- win 版
- 以下のコマンドで作成
- python -m venv venv
- 以下のコマンドで作成
- win 版
- 仮想環境を作成したディレクトリに移動して以下のコマンドを実行
- .\venv\Scripts\activate
- 仮想環境を作成したディレクトリに移動して以下のコマンドを実行
- win 版
- 以下のコマンド実行
- deactivate
- 以下のコマンド実行
-
win 版
-
以下のプロジェクトのディレクトリ構成を元に説明
- Project
- .vscode/
- venv/
- main.py
-
.vscode/に settings.json ファイルを追加
-
setting.json ファイルに以下の内容を記述して保存 { "python.venvPath": "../venv", "python.pythonPath": "../venv" }
python の path に python.exe があるパスを指定 venv ディレクトリは setting.json がおいているディレクトリの一つ上においているので 相対パス設定の"../venv"でうまくいく
-
launch.json に環境変数 PYTHONPATH を設定する
- これを設定しないと自作したモジュールをインポートしてもパスが通っていないからデバッグした時にインポートでエラーとなる
-
launch.json を作成
-
"configurations"項目に"env"項目を追加
-
環境変数"PYTHONPAT"を通す
-
こんな感じ
launch.json ↓ { // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true, // 自作モジュールをアクティブにしているファイルからでも実行できるようにするためパスを通している "env": { "PYTHONPATH": "${workspaceFolder}" } } ] }
-
-
デバッグ実行してブレークポイントで動くかチェック
- ちなみに F5 キーでデバッグ実行!
- launch.json がなければ生成する
- Project
-
参考サイト
-
-
win 版
-
以下のコマンドで mypy をインストール pip install mypy
-
設定画面の mypy の利用を有効化する
- グローバル設定ファイル settgins.json に以下の記述を追加 "python.linting.mypyEnabled": true
-
関数を作成した動作確認
- 以下のコードを添付して hello(123)の箇所でエラーが表示しているなら成功 def hello(name: str) -> str: return "Hello " + name
result: str = hello(123)
-
メモ
- pyfields のパッケージを使うと正しいコードを記述しているのにその箇所がエラーとなっていた
- つまり不十分!
- クラスのメソッドで戻り値の型ヒントを付けているメソッドをエラーとしていた。
- これは利用しない方がいいと判断した
- 導入が簡単だから入れたが、失敗だった
- pyfields のパッケージを使うと正しいコードを記述しているのにその箇所がエラーとなっていた
-
参考サイト mypy を VS code で使うための手順
-
-
win 版
-
以下のコマンドで black をインストール pip install black
-
VSCode で Black を使うように設定
- グローバル設定ファイル settgins.json に以下の記述を追加 "python.formatting.provider": "black"
-
alt + shift + f のショートカットキーでコード整形を実行
- Black で整形するための拡張機能がなけらばインストールを要求するのでその場合はインストール
-
コードが整形されていたら成功
-
参考サイト
-
- pytest を利用
- pip でインストール
- pip install pytest
- pip でインストール
- tests ディレクトリを作成
- 作成したディレクトリにinit.py を作成
- これを作成しないと自作パッケージのインポートでうまくいかずテストが実行できない
- 作成したディレクトリにinit.py を作成
- py ファイルを作成
- test_xxx の関数を作成する
- 関数名に test と頭につけないとテスト対象として認識されない
- test_xxx の関数を作成する
- テストするコードを記述したり、テストする自作モジュールをインポートする
- テスト用の py ファイルを開くとアクティブバーにテストアイコンが出るのでクリック
- テスト用の環境作りますかというボタンがあるのでボタンを押す
- settings.js に tests ディレクトリのパスを指定 こんな感じ(cli_simple ディレクトリ中にあるテストコードが入っている tests ディレクトリを指定) "${workspaceFolder}/cli_simple/tests",
- 参考サイト
-
以下のコマンドを実行
- pytest collect-only
- テストできるパッケージについての情報など一覧が出る
- pytest collect-only
- 参考サイト
-
エクスポート方法
- 以下のコマンドでインストールしたパッケージ一覧を記載したファイルをエクスポートできる pip freeze > requirements.txt
-
インポート方法
- 以下のコマンドでrequirements.txtに記載したパッケージ一覧をインポートできる pip install -r requirements.txt
- 以下のサイトをまず参考にした
- https://blog.narito.ninja/detail/86/
- 項目[翻訳ファイルの作成]の前まではそのまま使えた
- django-admin makemessages -l ja
- 上記のコマンドを実行したら以下のエラーが出た
- Django makemessages command generates error: "xgettext: Non-ASCII string"
- これのサイト以外のを参考にした
- 次はこのサイトが参考になった
- https://sinyblog.com/django/translation-001/
- 項目[メッセージファイルの作成]の以下のコマンドでメッセージを作成してみた
- python manage.py makemessages -l ja
- しかしエラーになった
- ImportError: cannot import name ‘ugettext_lazy’ from ‘django.utils.translation’
- インポートがないというエラーで調査した
- 以下のサイトで解決した
- 参考にしたサイトは django3 系のようだ
- 試した環境が django4 系だと 3 系のインポートファイルがなくなったみたい
- 利用できるインポートに変えてうまくいった
- もう一度以下のコマンドを実行
- python manage.py makemessages -l ja
- しかしエラーになった
- Django makemessages command generates error: "xgettext: Non-ASCII string"
- 最初に参考にしたサイトで試したエラーが起きた
- 調査したら以下のサイトを参考にして解決出来た
- https://stackoverflow.com/questions/45078011/django-makemessages-command-generates-error-xgettext-non-ascii-string
- venv の仮想環境での実行が原因のようだ
- 以下のコマンドで成功した
- python manage.py makemessages -l ja -i venv
- 使える状態になった
- ローカライズテキストの追加やコンパイルなど残り対応について
- 以下のサイトの翻訳設定や言語コンパイルの項目で対応できる