web-dev-qa-db-ja.com

環境変数値にアクセスするにはどうすればいいですか?

Pythonアプリケーションでアクセスしたい環境変数を設定します。この値をどうやって取得するのですか?

1621
Amit Yadav

環境変数は 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))

Pythonのデフォルトのインストール WindowsではC:\Pythonです。あなたがpythonを実行している間あなたが調べたいならばあなたはすることができます:

import sys
print(sys.prefix)
2447
Rod

キーが存在するかどうかを確認する(TrueまたはFalseを返す)

'HOME' in os.environ

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

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

/home/username/がデフォルトです。

176
lgriffiths

最初の質問(最初の部分)は「Pythonで環境変数を確認する方法」でした。

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

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

あなたは環境変数にアクセスすることができます。

import os
print os.environ

PYTHONPATHまたはPYTHONHOME環境変数の内容を確認してみてください。おそらく、これは2番目の質問に役立ちます。しかし、あなたはそれを明確にするべきです。

31
andrei1089

環境変数に関しては:

import os
print os.environ["HOME"]

きちんとした答えが可能になる前に、もう少しあなたの2番目のポイントを肉付けしなければならないでしょう。

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

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

16
Azorian

本番Webアプリケーションコードでコードを使用する予定の場合は、
Django/Flaskのような任意の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ファイルを非公開にしてください(一般にはアクセスできません)。

12
I Am Batman

Python 3では:

#!/usr/bin/python3
import os
for param in os.environ.keys():
    print("%s: %s " % (param, os.environ[param]))
9
Kardi Teknomo

これは import os が行われたと仮定した1行のオプションです。

for key in os.environ: print(key,':',os.environ[key])

またはフォーマット付き:

for key in os.environ: print('{:>30} {:<4} {:}'.format(key,':',os.environ[key]))
8
pudepied

os.environ.getの場合:

try:  
   env_value = os.environ.get("key_maybe_not_exist")
except KeyError: 
   print("Not exist environment value for %s" % "key_maybe_not_exist")

または

if "key_maybe_not_exist" in os.environ:
    existed_env_value = os.environ["key_maybe_not_exist"]

os.getenvの場合:

existed_env_value = os.getenv("key_maybe_not_exist")

に相当:

existed_env_value = os.getenv("key_maybe_not_exist", default=None)
4
crifan

実際には、これはこれで終わりです。

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
britodfbr

たくさんの素晴らしいライブラリもあります。 Envs 例えば、あなたはあなたの環境変数からオブジェクトをパースすることができます。それはradです。例えば:

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