Pythonでコンソールアプリケーションを作るときのテンプレート

Python の実行環境、開発環境をチームメンバー間で揃える。(非 Docker) Mac のグローバルで Python のバージョンを切り替えずに実行できる。 VSCode でデバッグ実行できる。 前提条件 macOS 使いたい Python のバージョンが Mac にインストールされている。(dmg、Homebrew) ※この記事で使う pipenv は pyenv と一緒に使うことができるようだが未検証。 VSCode に拡張機能 Python(ms-python.python)がインストールされている。 使うツール pip Python パッケージのインストールなどを行うユーティリティで、Python 3.4 以降には、標準で付属している。 pipenv 手動でパッケージのインストールおよびアンインストールを行うのと同じように Pipfile に対してパッケージの追加および削除を行うのに加え、自動でプロジェクト用の仮想環境を作成し管理する。また Pipenv は、いかなるときも重要な Pipfile.lock を生成し、これを利用しビルドが常に同じ結果になるようにする。 環境構築 pipenv をインストールする。 1 $ brew install pipenv Python のソースコードを格納するディレクトリを作る。 1 2 mkdir myproject cd myproject ソースコードのディレクトリに仮想環境を作るために環境変数を設定する。 1 export PIPENV_VENV_IN_PROJECT=1 Python のバージョンを指定して pipenv で初期化する。 このコマンドで作成される.venvディレクトリはバージョン管理に含めない。(チームメンバーがpipenv syncすれば作成されるため) 1 pipenv --python 3.8 Python のバージョンを 3.X.Y のようにパッチバージョンまで指定する場合は Pipfile を書き換える必要がある。 # Pipfile [requires] python_version = "3.8.3" Pipfile.lock を作成する 1 pipenv install ここまでの動作確認 1 2 3 4 5 # 作成した仮想環境のshellに切り替える pipenv shell # Pythonのバージョンを確認する python --version VSCode が pipenv で作った仮想環境を Python 拡張機能とデバッグ実行で使うために.vscode/settings.jsonを作る。※バージョン管理に含めてチームで共有する。 1 2 3 4 # .vscode/settings.json { "python.pythonPath": ".venv/bin/python" } エントリーポイントになるmain.pyを作成する。(ファイル名は任意) 1 2 msg = "Hello World!" print(msg) VSCode でデバッグ実行したときに実行されるファイルを定義するために.vscode/launch.jsonを作る。※バージョン管理に含めてチームで共有する。 1 2 3 4 5 6 7 8 9 10 11 12 13 //.vscode/launch.json { "version": "0.2.0", "configurations": [ { "name": "Python: main.py", "type": "python", "request": "launch", "program": "${workspaceFolder}/main.py", "console": "internalConsole" } ] } チームメンバーが上記のソースコードを取得した後に行うこと Pipfile.lockで指定されたバージョンのパッケージをインストールするためにinstallではなくsyncを使う。 1 pipenv sync --dev GitHub リポジトリ 今回作成したテンプレートのリポジトリ 参考 Python debug configurations in Visual Studio Code Pipenv: 人間のための Python 開発ワークフロー

7月 29, 2020

AWS CLI を AssumeRole と MFA で使う

AWS CLI で AWS にアクセスする際に AssumeRole で別の AWS アカウントの IAM ロールを引き受け、更に MFA でログインする。 前提条件 AWS CLI をインストールしていること。 IAM に AssumeRole の権限が付与されている。 MFA の設定が済んでいる。 事前に確認しておく情報 アクセスキー シークレットアクセスキー AssumeRole で引き受けるロール ARN MFA の ARN 初期設定 AWS のアクセスキーとシークレットアクセスキーを設定する。 1 2 3 4 5 $ aws configure AWS Access Key ID [None]:<アクセスキー> AWS Secret Access Key [None]:<シークレットアクセスキー> Default region name [None]:ap-northeast-1 Default output format [None]:text 上記のコマンドを実行すると入力した情報が保存されたファイルが作成される。 1 2 3 ~/.aws ├ config └ credentials ~/.aws/configを下記のように変更する。 profile_name:任意の名前。CLI を開くたびに入力するため入力しやすいものがおすすめ。 role_arn:AssumeRole するロール ARN。 mfa_serial:MFA デバイスの ARN。 source_profile:スイッチロール元のプロファイル名。 [default] region = ap-northeast-1 output = text [profile profile_name] role_arn = arn:aws:iam::yyyyyyyyyyyy:role/zzz mfa_serial = arn:aws:iam::xxxxxxxxxxxx:mfa/name region = ap-northeast-1 source_profile = default CLI で AssumeRole できるか確認 1 2 3 $ export AWS_DEFAULT_PROFILE=上記で設定したprofile_name $ aws sts get-caller-identity Enter MFA code for arn:aws:iam::XXXXXXXXXXXX:mfa/AAAA:<MFAコードを入力する> MFA コード入力後に表示される AccoutID がスイッチロール先の AWS アカウントになっていれば成功。 参考 【小ネタ】AWS CLI でスイッチロールして作業を行うための設定をやってみた ...

7月 20, 2020

リモートデスクトップ接続先のVSCodeでカーソル挿入を使う

Windowsのリモートデスクトップ接続を使うと接続先にctrl+alt+<anykey>が送られないため、標準設定のVSCodeだとカーソルを上下に挿入できない。 VSCodeのショートカットを変更して対処する。 環境 接続元 OS:Windows10 接続先 OS:Windows10 VSCode:1.46.1 設定 接続先のVSCodeでショートカットの設定を以下のように変更する。 既定のショートカット 変更後のショートカット カーソルを下に挿入 Ctrl + Alt + 下方向キー Shift + Alt + 下方向キー カーソルを上に挿入 Ctrl + Alt + 上方向キー Shift + Alt + 上方向キー 変更後の設定画面はこのようになる。 ...

6月 29, 2020