3
os.environ
を使用して環境変数を変更した場合、後でインポートするモジュールを変更しますか?os.environのC拡張モジュールへの表示
特に、sqlite3
requires一時変数の場所を特定するための環境変数の使用。しかし、私がos.environ['SQLITE_TMPDIR'] = '.'
をimport sqlite3
の前に使用すると、それは望みの効果がありません。どうして?
os.environ
を使用して環境変数を変更した場合、後でインポートするモジュールを変更しますか?os.environのC拡張モジュールへの表示
特に、sqlite3
requires一時変数の場所を特定するための環境変数の使用。しかし、私がos.environ['SQLITE_TMPDIR'] = '.'
をimport sqlite3
の前に使用すると、それは望みの効果がありません。どうして?
モジュールは、SQLite Cライブラリの単なるラッパーなので、os.environ
に加えられた変更は直接表示されません。
しかし、documentationは言う:
プラットフォームはputenv()機能をサポートしている場合、このマッピングは、環境を変更するだけでなく、環境を照会するために使用することができます。 putenv()は、マッピングが変更されたときに自動的に呼び出されます。
os.environ
を変更した後でSQLiteライブラリを初期化すると、変更内容が表示されます。
SQLiteは異なる環境変数on Unix-y OSesとon Windowsを読みます。
RTFM:os.environ: "このマッピングは、osモジュールが初めてインポートされたときにキャプチャされます。通常、Pythonの起動時にsite.pyを処理します。この時間以降に行われた環境への変更は、os.environただし、os.environを直接変更することによる変更は除きます。プラットフォーム依存の機能を持つos.putenvのドキュメントも参照してください。 –
[リンク先](https://docs.python.org/3/library/os.html#os.environ)を読むと、マニュアルを読むのが簡単です。 –
@PaulCorneliusあなたはドキュメントを誤解しています。環境への変更は 'os.environ'には反映されないという。私は、環境を変えるために 'os.environ'を変更することを反対にしています。ドキュメントは何も言いません。 – max