Python を使用する上での自分用メモ書き。
スクレイピングはこっち。
bakkyalo.hatenablog.jp
最初の注意
python3 と python (Windows なら py も) はすべて別物であることを意識しておく必要がある。
本記事で出てくる pip や venv は Python のバージョン毎に付随するものなので、慣れるまではコマンド冒頭の python3 -m 等は省略しない方が良いと個人的には思う。
特に -m が付く項目では
python3 --version
や
pip --version
等で現在の環境のバージョンを注意深く把握すること。
pyenv
基本的に (この記事の以下の記述を含め) README に全部書いてある。
Ubuntu に pyenv を入れる
README に従う。
curl https://pyenv.run | bash
すると
WARNING: seems you still have not added 'pyenv' to the load path.
等と出ると思うので、その下に書いてある通りに行動する。
例えば以下
# Load pyenv automatically by appending # the following to # ~/.bash_profile if it exists, otherwise ~/.profile (for login shells) # and ~/.bashrc (for interactive shells) : export PYENV_ROOT="$HOME/.pyenv" [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" # Restart your shell for the changes to take effect. # Load pyenv-virtualenv automatically by adding # the following to ~/.bashrc: eval "$(pyenv virtualenv-init -)"
Windows に pyenv を入れる
README にあるように、PowerShell を使うのが楽
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
管理者権限のない場合は事前に以下を打つ必要がある (ちなみにこれが何なのか私は理解してない)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
諸コマンド
- pyenv で利用可能な version 一覧
pyenv install -l
もしくは
pyenv install --list
- Python
3.12.3を入れる
pyenv install 3.12.3
- Python
3.12.3を使うと宣言する (venv を作る前にやる)
pyenv global 3.12.3 # ログイン中アカウント全体 pyenv local 3.12.3 # current directory のみ pyenv shell 3.12.3 # current session のみ
pyenv で環境を作ると .python-version というファイルが生成され、python というコマンドでそのバージョンの Python が使用できるようになる
- インストール済み Python の version 一覧
pyenv versions
- 現在の環境における Python の version
pyenv version
仮想環境関連
Python はモジュール間の依存関係が強い言語なので (要出典)、プロジェクト毎に環境を固めておきたくなるのは自然な発想である。Docker でコンテナ化してしまうもよし、conda で管理するもよし、Python 標準機能だけで管理するもよし。最終的には設計方針や趣味の範疇である。
この辺の話は
Pythonの開発環境の3つの観点をおさえよう
等を読むと良い。
conda
- Python
3.12.3で環境を作る
conda create -n "something_amazing_environment" python=3.12.3
- 環境に入る
conda activate [something_amazing_environment]
- 今ある環境の確認
conda info
- 今いる環境のパッケージの確認
conda list
- インストール
conda install -c conda-forge ~~~
- 終わり際
conda deactivate
venv
Python3 標準の仮想環境ツール *1
docs.python.org
Windows なら Python3 に同封されているが、Ubuntu では分離されているので別途入れないといけない。
エラーメッセージ例
$ python3 -m venv .something_amazing_environment The virtual environment was not created successfully because ensurepip is not available. On Debian/Ubuntu systems, you need to install the python3-venv package using the following command. apt install python3.10-venv You may need to use sudo with that command. After installing the python3-venv package, recreate your virtual environment.
そこで
sudo apt install python3-venv
より正確にするなら
sudo apt install python3.12-venv
等とする。
諸コマンド
- 環境を作る
事前に python3 の version を確認しておく。そして
python3 -m venv .[something_amazing_environment]
これで現在の python3 のバージョンにおける仮想環境ができる (仮想環境名の冒頭に . を付けるかどうかは慣習というよりかは趣味な気がする。)。後から Python のバージョンを変更するには一度消し直さないといけないので、仮想環境を作るときはバージョンに細心の注意を払うようにする。
より正確に
python3.12 -m venv .[something_amazing_environment]
等と打つこともできるし、python3 のバージョンの変更を前述の pyenv で行うこともできる。
- 仮想環境に入る
. .[something_amazing_environment]/bin/activate # Linux .\[something_amazing_environment]\Scripts\activate # Windows
Linux の方の最初の . は source の事。
- 終わり際
deactivate
pip
Python 標準のパッケージ管理システム
pip.pypa.io
packaging.python.org
Windows であれば Python3 に最初から同封されているが、Ubuntu では別途入れる必要がある
sudo apt install python3-pip
可能な限りグローバルを汚さないように venv 等で作った仮想環境内で pip install するようにしたい。
諸コマンド
- 毎回やるやつ
python3 -m pip install --upgrade pip
- requirements.txt
吐き出す
python3 -m pip freeze > requirements.txt
飲み込む
python3 -m pip install -r requirements.txt
VSCode 関連
ここでは (WSL 側ではなく) Windows 側に VSCode が入っているものとする。
ターミナルから Anaconda Prompt を動かす
以下は Miniconda の場合。Anaconda の人は適宜読み替えてください。方法は主に 3 つ。
(方法2) ショートカット通りに打つ
VSCode のターミナルで Command Prompt (PowerShell ではない) を開いて以下のように打つ。*2
%windir%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& '%userprofile%\miniconda3\shell\condabin\conda-hook.ps1' ; conda activate '%userprofile%\miniconda3' "
まったくを以ってどうでも良いですが、妙なこだわりがあって cmd ではなく PowerShell から打ちたい場合は %windir% の代わりに ${env:windir} を、%userprofile% の代わりに ${env:userprofile} を使ってください。
powershell -ExecutionPolicy ByPass -NoExit -Command "& '${env:userprofile}\miniconda3\shell\condabin\conda-hook.ps1' ; conda activate '${env:userprofile}\miniconda3' "
(方法3) settings.json に追記する
Ctrl + , で設定を開き、terminal integrated profiles windows と検索、settings.json の "terminal.integrated.profiles.windows" の {} 内に以下のように追記する
"Anaconda Powershell Prompt (miniconda3)": { "source": "PowerShell", "icon": "terminal-powershell", "args": [ "-ExecutionPolicy", "ByPass", "-NoExit", "-Command", "${env:USERPROFILE}\\miniconda3\\shell\\condabin\\conda-hook.ps1", "; conda activate ${env:USERPROFILE}\\miniconda3" ] },
これを入れておくと cmd からコマンドを打たずとも「プロファイルの起動」に「Anaconda Powershell Prompt (miniconda3)」が追加され、最初から (base) 環境で conda が activate された PowerShell が起動するようになる。

ただし、settings.json の仕様はやたら変更されるので、この方法はあんまりよくないかもしれない。*3
FYI:
Terminal Profiles
インポート "~~~" を解決できませんでした
まずはその import する module がどこにあるかを把握する。
python -c "import ~~~; print('\n'.join(~~~.__path__))"
大体 [module名].__path__ でその場所を返してくれる。 [module名].__file__, sys.path かもしれない。
なんなら pip show ~~~ でも良い。
$ pip show ~~~
で、それを VSCode の settings.json に追記する。
"python.analysis.extraPaths": [ "[さっきのコマンドで返ってきたパスをここに書く]", ],
docstring 関連
マウスカーソルを関数などの上にかざした時に出る説明を作る。
いくつかスタイルがある
- Google スタイル
- NumPy/SciPy スタイル
- reStructuredText (reST) スタイル
- Epytext スタイル
Matplotlib 関連
subplots 時に colorbar でグラフが圧縮されないようにする
pcolormesh に colorbar をつけると、その分だけ図がへこんでしまい、例えば上下で横軸が共通するグラフを並べた際に縦に揃わなくなってしまう。
そんな時は plt.subplots で layout='constrained' を指定する。
すると、文字が被らないように指定する
import matplotlib.pyplot as plt plt.tight_layout()
と衝突するが、これを外しても求めているグラフが得られてハッピー。
JSON 関連
読み込み
import json with open('./path/to/input.json') as f: data = json.load(f) # 辞書 data を使う処理
書き込み
import json # 辞書 data を作る処理 with open('./path/to/output.json', 'w') as f: json.dump(data, f, indent=4)
*1:Python2 系や Python3.2 以前では venv が使えないので、代わりに virtualenv を使います。venv の対応は 3.3 からで、特に 3.5 からは公式によるサポートになっているので、3.5 以降で仮想環境を作る際は venv の使用が推奨されるようです。 → 公式 document
*2:これはスタートメニューにある Anaconda Powershell Prompt (miniconda3) のリンク先をそのまま書いています。プロパティからリンク先を見られるので念のため確認してください。
*3:一昔前は 「terminal.integrated.profiles.windows」ではなく「terminal.integrated.shell.windows」でした。