How to access environment variable values?

后端 未结 12 1350
孤独总比滥情好
孤独总比滥情好 2020-11-21 23:52

I set an environment variable that I want to access in my Python application. How do I get its value?

相关标签:
12条回答
  • 2020-11-22 00:41

    Actually it can be done this away:

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

    Or simply:

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

    For view the value in the parameter:

    print(os.environ['HOME'])
    

    Or:

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

    To set the value:

    os.environ['HOME'] = '/new/value'
    
    0 讨论(0)
  • 2020-11-22 00:43

    Environment variables are accessed through os.environ

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

    Or you can see a list of all the environment variables using:

    os.environ
    

    As sometimes you might need to see a complete list!

    # 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 default installation on Windows is C:\Python. If you want to find out while running python you can do:

    import sys
    print(sys.prefix)
    
    0 讨论(0)
  • 2020-11-22 00:45

    If you are planning to use the code in a production web application code,
    using any web framework like Django/Flask, use projects like envparse, using it you can read the value as your defined type.

    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)
    

    NOTE: kennethreitz's autoenv is a recommended tool for making project specific environment variables, please note that those who are using autoenv please keep the .env file private (inaccessible to public)

    0 讨论(0)
  • 2020-11-22 00:47

    You can also try this

    First, install python-decouple

    pip install python-decouple
    

    import it in your file

    from decouple import config
    

    Then get the env variable

    SECRET_KEY=config('SECRET_KEY')
    

    Read more about the python library here

    0 讨论(0)
  • 2020-11-22 00:50

    There's also a number of great libraries. Envs for example will allow you to parse objects out of your environment variables, which is rad. For example:

    from envs import env
    env('SECRET_KEY') # 'your_secret_key_here'
    env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
    
    0 讨论(0)
  • 2020-11-22 00:54

    .env File

    Here is my .env file (I changed multiple characters in each key to prevent people hacking my accounts).

    SECRET_KEY=6g18169690e33af0cb10f3eb6b3cb36cb448b7d31f751cde
    AWS_SECRET_ACCESS_KEY=18df6c6e95ab3832c5d09486779dcb1466ebbb12b141a0c4
    DATABASE_URL='postgres://drjpczkqhnuvkc:f0ba6afd133c53913a4df103187b2a34c14234e7ae4b644952534c4dba74352d@ec2-54-146-4-66.compute-1.amazonaws.com:5432/ddnl5mnb76cne4'
    AWS_ACCESS_KEY_ID=AKIBUGFPPLQFTFVDVIFE
    DISABLE_COLLECTSTATIC=1
    EMAIL_HOST_PASSWORD=COMING SOON
    MAILCHIMP_API_KEY=a9782cc1adcd8160907ab76064411efe-us17
    MAILCHIMP_EMAIL_LIST_ID=5a6a2c63b7
    STRIPE_PUB_KEY=pk_test_51HEF86ARPAz7urwyGw9xwLkgbgfCYT48LttlwjEkb88I7Ljb5soBtuKXBaPiKfuu0Cx2BzIowR3jJFkC8ybFBAEf00DFY46tB8
    STRIPE_SECRET_KEY=sk_test_19HEF55BCEAz7urwytx7tO3QCxV4R8DEFXbqj6esg7OKuybiSTI8iJD8mmJUQpg4RKENxuS04DKOCzYHpDkAjUttO00LOmsT5Eg
    

    settings

    I was told my data was corrupted. I was struggling to work out what was going on. I had a suspicion the values from .env were not being passed into my settings file.

    print(os.environ.get('AWS_SECRET_ACCESS_KEY'))
    print(os.environ.get('AWS_ACCESS_KEY_ID'))
    print(os.environ.get('AWS_SECRET_ACCESS_KEY'))
    print(os.environ.get('DATABASE_URL'))
    print(os.environ.get('SECRET_KEY'))
    print(os.environ.get('DISABLE_COLLECTSTATIC'))
    print(os.environ.get('EMAIL_HOST_PASSWORD'))
    print(os.environ.get('MAILCHIMP_API_KEY'))
    print(os.environ.get('MAILCHIMP_EMAIL_LIST_ID'))
    print(os.environ.get('STRIPE_PUB_KEY'))
    print(os.environ.get('STRIPE_SECRET_KEY'))
    

    The only value being printed correctly was the SECRET_KEY. I reviewed the .env file and for the life of me could not see any reason why the SECRET_KEY was working and nothing else.

    I got everything working eventually by putting this above the print statements.

    from dotenv import load_dotenv   #for python-dotenv method
    load_dotenv()                    #for python-dotenv method
    

    And doing

    pip install -U python-dotenv
    

    I am still not sure why SECRET_KEY was working when all the others were broken.

    0 讨论(0)
提交回复
热议问题