Open2

【Python】 小技メモ

Ryota ChijimatsuRyota Chijimatsu

ipynbファイルに開発環境を入れておく

どの仮想環境を使って解析したのか分からなくなるので、最初のセルに入れておく。

# ————————————
# 環境情報のキャプチャセル
# ————————————
import os
import sys
import subprocess
from datetime import datetime
from IPython.display import display, Markdown
# カレントディレクトリ
cwd = os.getcwd()
# 仮想環境(venv または conda)
venv   = os.environ.get('VIRTUAL_ENV')            # venv
conda  = os.environ.get('CONDA_DEFAULT_ENV')      # conda
env    = venv or conda or "(未検出)"
# Python 実行ファイル&バージョン
exe    = sys.executable
ver    = sys.version.splitlines()[0]
# 実行日
date   = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 表示用 Markdown 組み立て
md = f"""
**📅 Captured at:** `{date}`\n
**📁 Current directory:** `{cwd}`\n
**🐍 Python executable:** `{exe}`\n
**🐍 Python version:** `{ver}`\n
**🛠️ Virtual environment:** `{env}`\n
"""
# Notebook 上に表示
display(Markdown(md))

Ryota ChijimatsuRyota Chijimatsu

sys.path.appendの便利なワンライナー

現在作業しているところに最も近いsrcフォルダにパスを通す。

ipynb
import sys
from pathlib import Path
sys.path.append(str(next(p / "src" for p in [Path.cwd(), *Path.cwd().parents] if (p / "src").exists())))


現在作業しているところに最も近いGitリポジトリ内のsrcフォルダにパスを通す。

ipynb
import sys
from pathlib import Path
sys.path.append(str(next(p for p in [Path.cwd(), *Path.cwd().parents] if (p/".git").exists())/"src"))


スクリプトの置き場所の最も近いsrcフォルダにパスを通す。

pyスクリプト
import sys
from pathlib import Path

sys.path.append(str(next(p / "src" for p in [Path(__file__).resolve().parent, *Path(__file__).resolve().parents] if (p / "src").exists())))