在 python 程序中使用 Linux 环境变量
Use Linux env variables in python program
我正在尝试在 python 代码中使用 OS 环境变量。下面是示例。
环境变量
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')
它应该注入主机和端口的变量,但它不起作用。我试图添加 .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 代码中使用 OS 环境变量。下面是示例。
环境变量
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')
它应该注入主机和端口的变量,但它不起作用。我试图添加 .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