Python attrs ライブラリを使用し、Settings オブジェクトにディレクトリ パスを設定しようとしています。これは、環境変数がシェル自体から設定されている場合にうまく機能します。しかし、シェルから TEST_TMPDIR が設定されておらず、Python コード自体に値を設定しようとすると、デフォルトは None に初期化されます。
@attr.s(frozen=True)
class Settings(object):
test_tmpdir = attr.ib(default=os.environ.get("TEST_TMPDIR"))
以下のコードの例 デフォルトは None です。
os.environ["TEST_TMPDIR"] = '/tmp/'
setting = Settings()
コードは現在、環境変数がシェル レベルで設定されている場合にのみ機能します。そのため、端末で実行export TEST_TMPDIR="/tmp/"
してから Settings() を読み取ると機能します。
os.environ["TEST_TMPDIR"] を読み取っ__attrs_post_init__
てみましたが、Python コードで設定された値が返されます。
開始時にデフォルトが設定されない理由に関するリンクは役に立ちます。