環境変数値にアクセスする方法は?


回答:


3170

環境変数はos.environを通じてアクセスされます

import os
print(os.environ['HOME'])

または、以下を使用してすべての環境変数のリストを表示できます。

os.environ

時々あなたは完全なリストを見る必要があるかもしれません!

# using get will return `None` if a key is not present rather than raise a `KeyError`
print(os.environ.get('KEY_THAT_MIGHT_EXIST'))

# os.getenv is equivalent, and can also give a default value instead of `None`
print(os.getenv('KEY_THAT_MIGHT_EXIST', default_value))

WindowsでのPythonのデフォルトのインストールC:\Pythonです。Pythonの実行中に調べたい場合は、次のようにできます。

import sys
print(sys.prefix)

1
こんにちはロッド、 'default-installation'に関する効果的な返信に感謝します。リンクをたどるのではなく、すばやく理解するという観点から効果的です。それは本当に私は感謝しています:)しかし、私の(1)質問については、コマンドを見て、以下のスニペットを出力してください。 <コンソール>」、行1、<モジュール>ファイルの"C:\ Python25 \ LIB \ os.py"の行435、GetItem関数 戻りself.data [key.upper()] KeyError例外: 'PYTHONPATH' >>> print os.environ.get( 'PYTHONPATH')なし>>> // PLZを続行します... //
Amit Yadav

最初の方法では、スクリプトが例外をスローしますが、2番目の方法ではNoneを返します。それで、それを意味のある値にする方法はありますか、それとも私は間違った方法でやっていますか?アミット。
アミットヤダフ、2011

7
os.environは辞書です。辞書にないキーにアクセスしようとすると、KeyErrorがスローされます。キーが存在しない場合、getメソッドは単にNoneを返します。PYTHONPATHが設定されていますか?存在することが保証されているPATHなどの変数を試すことができますか?意味のある値を返しますか?
ロッド

2
PYTHONPATHは、Pythonの外部からPython(sys.path)に新しい検索パスを追加するために使用されます。見ていdocs.python.org/using/cmdline.html#environment-variables
ロッド

11
.get()デフォルトを指定することもできます。
Gringo Suave

243

キーが存在するかどうかを確認するには(戻り値TrueまたはFalse

'HOME' in os.environ

get()キーを印刷するときにも使用できます。デフォルトを使用する場合に便利です。

print(os.environ.get('HOME', '/home/username/'))

/home/username/デフォルトはどこですか


3
どちらが優れている、"HOME" in os.environまたはos.environ.get('HOME')
内部石2017

11
@endolith彼らは異なることをします。1つ目はTrueまたはFalseを返し、2つ目は値(おそらくNone)を返します。
トレントン

1
@endolith、正しい質問は"HOME" in os.environvs os.environ.get('HOME') is Noneです。最初に見たように、作業がはるかに読みやすく快適です。
Konstantin Sekeresh

59

元の質問(前半)は、「Pythonで環境変数を確認する方法」でした。

$ FOOが設定されているかどうかを確認する方法は次のとおりです。

try:  
   os.environ["FOO"]
except KeyError: 
   print "Please set the environment variable FOO"
   sys.exit(1)

66
os.environの "FOO"
ealfonso 2013年

4
より速くすることができます。env varsのケースは「try」に最適です:stackoverflow.com/a/1835844/187769
RandomInsano

13
@RandomInsanoの高速化= / =より良い。このコードは"if 'FOO' not in os.environ: ..."ブロックよりも可読性が低いように見えます
Dangercrow

44

以下を使用して環境変数にアクセスできます

import os
print os.environ

PYTHONPATHまたはPYTHONHOME環境変数の内容を確認してください。これは2番目の質問に役立つでしょう。ただし、それを明確にする必要があります。


29

環境変数に関しては:

import os
print os.environ["HOME"]

きちんとした回答が可能になる前に、2つ目のポイントをもう少し具体化する必要があると思います。


27
import os
for a in os.environ:
    print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")

これにより、すべての環境変数とその値が出力されます。


27

実際には、これは離れて行うことができます:

import os

for item, value in os.environ.items():
    print('{}: {}'.format(item, value))

または単に:

for i, j in os.environ.items():
    print(i, j)

パラメータの値を表示するには:

print(os.environ['HOME'])

または:

print(os.environ.get('HOME')

値を設定するには:

os.environ['HOME'] = '/new/value'

4
いいえ、この回答は実際には既存の回答に何も追加しません
Bart

1
これは削除する必要があります。他の回答と重複しています。str.format単なるファンシーな追加です。
connectyourcharger

>>> import os, pprint; pprint.pprint(list(os.environ.items()))
noobninja

18


Django / Flaskなどの任意のWebフレームワークを使用して、本番環境のWebアプリケーションコードでコードを使用する場合は、envparseなどのプロジェクトを使用します。これを使用すると、定義した型として値を読み取ることができます。

from envparse import env
# will read WHITE_LIST=hello,world,hi to white_list = ["hello", "world", "hi"]
white_list = env.list("WHITE_LIST", default=[]) 
# Perfect for reading boolean
DEBUG = env.bool("DEBUG", default=False)

注:kennethreitzのautoenvは、プロジェクト固有の環境変数を作成するための推奨ツールです。使用している人はautoenv.envファイルを非公開にしてください(一般からはアクセスできません)。


11

素晴らしいライブラリーもたくさんあります。たとえば、Envsを使用すると、radである環境変数からオブジェクトを解析できます。例えば:

from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']

3

djangoについては(https://github.com/joke2k/django-environ)を参照してください

$ pip install django-environ

import environ
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()

# False if not in os.environ
DEBUG = env('DEBUG')

# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')

0

これも試すことができます

まず、インストール python-decouple

pip install python-decouple

ファイルにインポートします

from decouple import config

次に、環境変数を取得します

SECRET_KEY=config('SECRET_KEY')

Pythonライブラリの詳細については、こちらをご覧ください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.