gpt4 book ai didi

python - 在Python程序中使用Linux环境变量

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:03 27 4
gpt4 key购买 nike

我正在尝试在 python 代码中使用操作系统环境变量。下面是示例。

环境变量

    export DOCKER_HOST=10.0.0.5    export PORT=1002

Python代码

    import os     import docker     host = os.environ['DOCKER_HOST']    port = os.environ['PORT']    client = docker.APIClient(base_url='tcp://host:port')

它应该注入(inject)主机和端口的变量,但它不起作用。我尝试添加.format,无奈

错误

raceback (most recent call last):  File "./update.py", line 24, in     client = docker.APIClient(base_url="tcp://docker_host:docker_port")  File "/usr/local/lib/python2.7/dist-packages/docker/api/client.py", line 109, in __init__    base_url, IS_WINDOWS_PLATFORM, tls=bool(tls)  File "/usr/local/lib/python2.7/dist-packages/docker/utils/utils.py", line 363, in parse_host    "Invalid port: {0}".format(addr)docker.errors.DockerException: Invalid port: docker_host:docker_port

最佳答案

您的问题如下

client = docker.APIClient(base_url='tcp://host:port')

您正在使用host:port作为文字字符串。 Python 直到 Python 3.6 才支持字符串插值。您可以使用以下方式之一

client = docker.APIClient(base_url='tcp://' + host + ':' + port)
client = docker.APIClient(base_url='tcp://{}:{}'.format(host,port))
client = docker.APIClient(base_url='tcp://{0}:{1}'.format(host,port))
client = docker.APIClient(base_url='tcp://{host}:{port}'.format(host=host,port=port))
client = docker.APIClient(base_url='tcp://%s:%s' % (host,port))

编辑-1

感谢@code_onkel指出Python 3.6中的字符串插值(之前没有使用过)。如果您使用的是 Python 3.6.X,也可以使用下面的内容

client = docker.APIClient(base_url=f'tcp://{host}:{port}')

字符串前面的f很重要。请引用PEP 498了解更多详情

关于python - 在Python程序中使用Linux环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46247243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com