Sample Python List
- プログラミング言語 Python の学習用
- Python 開発経験値を身に着けるためにツール/ゲーム/ Web サイトなど作成したアプリ一覧
このソフトウェアの使用または使用不可によって、いかなる問題が生じた場合も、著作者はその責任を負いません。バージョンアップや不具合に対する対応の責任も負わないものとします。
ツール |
---|
pyenv |
Chocolatey |
VSCode |
- win 版
- pyenv をインストールする方法
- windows 用のパッケージ管理ソフト「Chocolatey」を導入
- 以下のサイトを参考にしてインストールした
- Chocolatey の導入方法
- Chocolate を使って pyenv をインストール
- 以下のサイトの項目「pyenv インストール」を参考にしてインストールした
- Windows に pyenv を導入する方法
- pyenv がインストールか確認
- PowerShell を開いて以下のコマンドを実行
- pyenv --version
- 実行すると以下のメッセージがでる可能性がある
- pyenv : このシステムではスクリプトの実行が無効になっているため...
- このメッセージは PowerShell のポリシー設定が原因なので以下のサイトを参考にして解決できた
- PowerShell を開いて以下のコマンドを実行
- windows 用のパッケージ管理ソフト「Chocolatey」を導入
- 参考サイト
- pyenv をインストールする方法
-
win 版
-
仮想環境を動かすため PowerShell の ps ファイルを実行するものがある
-
しかし PowerShell の環境によっては ps ファイルを実行不可能な設定なのもある
-
.\venv\Scripts\activate を実行すると以下のエラーが出た ..\venv\Scripts\Activate.ps1 を読み込むことができません。
-
原因 1: PowerShell の安全装置の一つであるスクリプト不許可の設定がされている
-
どういう事か
- PowerShell の安全装置の一つであるスクリプト不許可の設定がされている
-
原因なのかどうかの確認方法
- PowerShell を実行
- Get-ExecutionPolicy コマンドを実行
- Restricted が表示されたら原因1に該当
-
原因対策
-
PowerShell を管理者として実行
-
以下のコマンドを実行して Y を入力 set-executionpolicy remotesigned
-
Get-ExecutionPolicy コマンドを実行
-
RemoteSigned が表示されたら OK
-
-
参考サイト
-
-
-
-
win 版
-
pyenv が入っている場合
- 利用する python をインストールする
- pyenv install xxx
- xxx にインストールしたい python のバージョンを指定
- インストールできるバージョンのリストは以下のコマンドで出力できる
- pyenv install --list
- pyenv install xxx
- プロジェクトディレクトリに移動
- プロジェクトで利用する python のバージョンを設定
- pyenv local xxx
- インストール済みバージョン一覧は以下のコマンドで出力できる
- pyenv versions
- プロジェクトディレクトリに.python-version ファイルが作成しているかチェック
- .python-version ファイルは git にコミットしないように無視リストに追加
- 利用する python をインストールする
-
-
以下のコマンドで環境作成 - 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 版
- flake8
- 以下のコマンドで flake8 をインストール pip install flake8
- flake8 を利用する拡張機能を追加
- flake8 の設定ファイル tox.ini ファイルをワークススペースのトップディレクトリに配置
- tox.ini ファイルに flake8 のオプションを記述できる flake8 のオプション一覧
- vscode ワークスペースの設定
- .vscode/setting.json を作成
- setting.json に下記の記述を追加 // flake8 の設定 // 絶対パスでないと機能しない "cornflakes.linter.executablePath": "インストールした flake8.exe の絶対パス(相対パスだとだめだった)", // lint を有効 "python.linting.enabled": true, // デフォルトの lint セーブは無効 "python.linting.lintOnSave": false, // 初期状態の pylint は無効 "python.linting.pylintEnabled": false, // デフォルトの flake8 は無効 "python.linting.flake8Enabled": false,
- メモ
- ファイルを開かないと問題点が表示しない
- 全ファイルを問題点を出すには flake8 ./ をターミナルに打てばカレントディレクトリ内にすべての py ファイルをチェックできた
- 参考サイト VSCode での Python 開発でリアルタイムにコードチェックが走るようにする
- flake8
-
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",
- test_xxx.py というテスト用の py ファイルを作成
- test.py というファイルではテストフレームワークで認識しないので注意
- 参考サイト
- pip-reviewを利用
- pip でインストール
- pip install pip-review
- pip でインストール
-
以下のコマンドを実行
- pytest collect-only
- テストできるパッケージについての情報など一覧が出る
- pytest collect-only
- 参考サイト
-
エクスポート方法
- 以下のコマンドでインストールしたパッケージ一覧を記載したファイルをエクスポートできる pip freeze > requirements.txt
-
インポート方法
- 以下のコマンドで requirements.txt に記載したパッケージ一覧をインポートできる pip install -r requirements.txt
- Shell ディレクトリにまとめている
- Python プロジェクトの自動作成バッチファイルがある
- 以下のサイトをまず参考にした
- 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
- 使える状態になった
- ローカライズテキストの追加やコンパイルなど残り対応について
- 以下のサイトの翻訳設定や言語コンパイルの項目で対応できる
-
クラスのdictにはクラス変数定義の要素が入っているが、init内でクラス変数定義しないと要素が入らない
-
dictが要素に入らないケース
class Test(object): value: int = 0 test: Test = Test() # __dict__を出力しても空になっている print(test.__dict__)
-
dictに要素が入るケース
class Test(object): def __init__(self): self.value = 0 test: Test = Test() # __dict__を出力するとvalue要素がある print(test.__dict__)
-
-
static ディレクトリは各アプリディレクト内で作成しないといけない
- django で js ファイルを配置したかったので以下のサイトを参考にした
- この通りにやったのだが、js ファイルが読み込まれなかった
- 次に以下のサイトを参考にした
- アプリディレクトリに static ディレクトリを作成してその中に js ファイルを配置した
- このやり方だとうまくいった
- static ディレクトリはアプリディレクトリで作成しないだめみたい
- 利用できる static ディレクトリを調べるコマンドがある
- python.exe .\manage.py findstatic .
- これで現在利用できる static ディレクトリ一覧が表示する