Rod*_*Rod 2823
环境变量可通过os.environ访问
import os
print(os.environ['HOME'])
Run Code Online (Sandbox Code Playgroud)
或者您可以使用以下命令查看所有环境变量的列表:
os.environ
Run Code Online (Sandbox Code Playgroud)
有时您可能需要查看完整列表!
# 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))
Run Code Online (Sandbox Code Playgroud)
Windows上的Python默认安装是C:\Python
.如果你想在运行python时找到答案,你可以这样做:
import sys
print(sys.prefix)
Run Code Online (Sandbox Code Playgroud)
小智 212
检查密钥是否存在(返回True
或False
)
'HOME' in os.environ
Run Code Online (Sandbox Code Playgroud)
你也可以get()
在打印钥匙时使用; 如果您想使用默认值,则非常有用.
print(os.environ.get('HOME', '/home/username/'))
Run Code Online (Sandbox Code Playgroud)
哪里/home/username/
是默认值
Sco*_*son 50
最初的问题(第一部分)是"如何在Python中检查环境变量".
以下是检查$ FOO是否设置的方法:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
Run Code Online (Sandbox Code Playgroud)
and*_*089 37
您可以使用访问环境变量
import os
print os.environ
Run Code Online (Sandbox Code Playgroud)
尝试查看PYTHONPATH或PYTHONHOME环境变量的内容,这可能对您的第二个问题有所帮助.但是你应该澄清一下.
Geo*_*ili 35
导入os
模块:
import os
Run Code Online (Sandbox Code Playgroud)
要获取环境变量:
os.environ.get('Env_var')
Run Code Online (Sandbox Code Playgroud)
设置环境变量:
# Set environment variables
os.environ['Env_var'] = 'Some Value'
Run Code Online (Sandbox Code Playgroud)
Jim*_*som 24
至于环境变量:
import os
print os.environ["HOME"]
Run Code Online (Sandbox Code Playgroud)
在你得到合适的答案之前,我担心你不得不更多地充实你的第二点.
小智 21
import os
for a in os.environ:
print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")
Run Code Online (Sandbox Code Playgroud)
这将打印所有环境变量及其值.
小智 16
实际上,可以这样做:
import os
for item, value in os.environ.items():
print('{}: {}'.format(item, value))
Run Code Online (Sandbox Code Playgroud)
或者简单地:
for i, j in os.environ.items():
print(i, j)
Run Code Online (Sandbox Code Playgroud)
要查看参数中的值:
print(os.environ['HOME'])
Run Code Online (Sandbox Code Playgroud)
要么:
print(os.environ.get('HOME')
Run Code Online (Sandbox Code Playgroud)
设置值:
os.environ['HOME'] = '/new/value'
Run Code Online (Sandbox Code Playgroud)
Ren*_*han 14
如果您计划在生产Web应用程序代码中
使用代码,使用任何Web框架(如Django/Flask),请使用像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)
Run Code Online (Sandbox Code Playgroud)
注意:kennethreitz的autoenv是用于制作项目特定环境变量的推荐工具,请注意那些正在使用的人autoenv
请将.env
文件保密(公共场所无法访问)
Mei*_*bay 13
编辑 - 2021 年 10 月
根据 @Peter 的评论,您可以通过以下方式测试它:
main.py
#!/usr/bin/env python
from os import environ
# Initialize variables
num_of_vars = 50
for i in range(1, num_of_vars):
environ[f"_BENCHMARK_{i}"] = f"BENCHMARK VALUE {i}"
def stopwatch(repeat=1, autorun=True):
"""
Source: https://stackoverflow.com/a/68660080/5285732
stopwatch decorator to calculate the total time of a function
"""
import timeit
import functools
def outer_func(func):
@functools.wraps(func)
def time_func(*args, **kwargs):
t1 = timeit.default_timer()
for _ in range(repeat):
r = func(*args, **kwargs)
t2 = timeit.default_timer()
print(f"Function={func.__name__}, Time={t2 - t1}")
return r
if autorun:
try:
time_func()
except TypeError:
raise Exception(f"{time_func.__name__}: autorun only works with no parameters, you may want to use @stopwatch(autorun=False)") from None
return time_func
if callable(repeat):
func = repeat
repeat = 1
return outer_func(func)
return outer_func
@stopwatch(repeat=10000)
def using_environ():
for item in environ:
pass
@stopwatch
def using_dict(repeat=10000):
env_vars_dict = dict(environ)
for item in env_vars_dict:
pass
Run Code Online (Sandbox Code Playgroud)
python "main.py"
# Output
Function=using_environ, Time=0.216224731
Function=using_dict, Time=0.00014206099999999888
Run Code Online (Sandbox Code Playgroud)
如果这是真的……使用 adict()
比environ
直接访问快 1500 倍。
性能驱动的方法 - 调用的environ
成本很高,因此最好调用一次并将其保存到字典中。完整示例:
from os import environ
# Slower
print(environ["USER"], environ["NAME"])
# Faster
env_dict = dict(environ)
print(env_dict["USER"], env_dict["NAME"])
Run Code Online (Sandbox Code Playgroud)
PS-如果您担心暴露私有环境变量,请env_dict
在分配后进行清理。
Blo*_*gic 10
您可以使用python-dotenv
模块来访问环境变量
使用以下命令安装模块:
pip install python-dotenv
Run Code Online (Sandbox Code Playgroud)
之后,创建一个.env
包含以下条目的文件:
BASE_URL = "my_base_url"
Run Code Online (Sandbox Code Playgroud)
然后将模块导入到你的Python文件中
import os
from dotenv import load_dotenv
# Load the environment variables
load_dotenv()
# Access the environment variable
print(os.getenv("BASE_URL"))
Run Code Online (Sandbox Code Playgroud)
小智 7
对于 Django,请参阅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')
Run Code Online (Sandbox Code Playgroud)
小智 6
还有很多很棒的图书馆。例如,Envs将允许您从环境变量rad中解析对象。例如:
from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
Run Code Online (Sandbox Code Playgroud)
小智 6
你也可以试试这个:
首先,安装 python-decouple
pip install python-decouple
Run Code Online (Sandbox Code Playgroud)
将其导入到您的文件中
from decouple import config
Run Code Online (Sandbox Code Playgroud)
然后获取环境变量
SECRET_KEY=config('SECRET_KEY')
Run Code Online (Sandbox Code Playgroud)
在此处阅读有关 Python 库的更多信息。
归档时间: |
|
查看次数: |
1614426 次 |
最近记录: |