Python Testcontainers Postgresql模拟不起作用

Python Testcontainers Postgresql模拟不起作用,python,python-3.x,postgresql,mocking,testcontainers,Python,Python 3.x,Postgresql,Mocking,Testcontainers,我需要模拟postgresql数据库,经过一些研究,我决定使用Python 在pip安装Testcontainer inPython3.6之后,我发现开始的初始代码非常简单: from testcontainers.postgres import PostgresContainer postgres_container = PostgresContainer("postgres:9.5") postgres_container.start() sql_url = postg

我需要模拟postgresql数据库,经过一些研究,我决定使用Python
在pip安装Testcontainer inPython3.6之后,我发现开始的初始代码非常简单:

from testcontainers.postgres import PostgresContainer

postgres_container = PostgresContainer("postgres:9.5")
postgres_container.start()
sql_url = postgres_container.get_connection_url()
Python3.8,在Windows10或Ubuntu下,我总是收到相同的错误消息,我是否遗漏了什么

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 672, in urlopen
    chunked=chunked,
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 387, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python3.6/http/client.py", line 1287, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1333, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1282, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1042, in _send_output
    self.send(msg)
  File "/usr/lib/python3.6/http/client.py", line 980, in send
    self.connect()
  File "/usr/local/lib/python3.6/dist-packages/docker/transport/unixconn.py", line 43, in connect
    sock.connect(self.unix_socket)
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 449, in send
    timeout=timeout
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 720, in urlopen
    method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/lib/python3/dist-packages/six.py", line 702, in reraise
    raise value.with_traceback(tb)
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 672, in urlopen
    chunked=chunked,
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 387, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python3.6/http/client.py", line 1287, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1333, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1282, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1042, in _send_output
    self.send(msg)
  File "/usr/lib/python3.6/http/client.py", line 980, in send
    self.connect()
  File "/usr/local/lib/python3.6/dist-packages/docker/transport/unixconn.py", line 43, in connect
    sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/docker/api/client.py", line 205, in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
  File "/usr/local/lib/python3.6/dist-packages/docker/api/daemon.py", line 181, in version
    return self._result(self._get(url), json=True)
  File "/usr/local/lib/python3.6/dist-packages/docker/utils/decorators.py", line 46, in inner
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/docker/api/client.py", line 228, in _get
    return self.get(url, **self._set_request_timeout(kwargs))
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "***.py", line 4, in <module>
    postgres_container = PostgresContainer("postgres:9.5")
  File "/usr/local/lib/python3.6/dist-packages/testcontainers/postgres.py", line 36, in __init__
    super(PostgresContainer, self).__init__(image=image)
  File "/usr/local/lib/python3.6/dist-packages/testcontainers/core/generic.py", line 21, in __init__
    super(DbContainer, self).__init__(image)
  File "/usr/local/lib/python3.6/dist-packages/testcontainers/core/container.py", line 16, in __init__
    self._docker = DockerClient()
  File "/usr/local/lib/python3.6/dist-packages/testcontainers/core/docker_client.py", line 23, in __init__
    self.client = docker.from_env()
  File "/usr/local/lib/python3.6/dist-packages/docker/client.py", line 85, in from_env
    timeout=timeout, version=version, **kwargs_from_env(**kwargs)
  File "/usr/local/lib/python3.6/dist-packages/docker/client.py", line 40, in __init__
    self.api = APIClient(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/docker/api/client.py", line 188, in __init__
    self._version = self._retrieve_server_version()
  File "/usr/local/lib/python3.6/dist-packages/docker/api/client.py", line 213, in _retrieve_server_version
    'Error while fetching server API version: {0}'.format(e)
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))
Exception ignored in: <bound method DockerContainer.__del__ of <testcontainers.postgres.PostgresContainer object at 0x7ff612c65390>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/testcontainers/core/container.py", line 73, in __del__
AttributeError: 'PostgresContainer' object has no attribute '_container'

回溯(最近一次呼叫最后一次):
文件“/usr/lib/python3/dist packages/urllib3/connectionpool.py”,urlopen中的第672行
分块的,
文件“/usr/lib/python3/dist packages/urllib3/connectionpool.py”,第387行,在请求中
conn.request(方法,url,**httplib\u request\u kw)
请求中的文件“/usr/lib/python3.6/http/client.py”,第1287行
self.\u发送\u请求(方法、url、正文、标题、编码\u分块)
文件“/usr/lib/python3.6/http/client.py”,第1333行,在发送请求中
self.endheaders(body,encode\u chunked=encode\u chunked)
文件“/usr/lib/python3.6/http/client.py”,第1282行,在endheaders中
self.\u发送\u输出(消息体,encode\u chunked=encode\u chunked)
文件“/usr/lib/python3.6/http/client.py”,第1042行,在发送输出中
self.send(msg)
文件“/usr/lib/python3.6/http/client.py”,第980行,在send中
self.connect()
文件“/usr/local/lib/python3.6/dist packages/docker/transport/unixconn.py”,第43行,在connect中
sock.connect(self.unix\u套接字)
FileNotFoundError:[Errno 2]没有这样的文件或目录
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python3/dist packages/requests/adapters.py”,第449行,在send中
超时=超时
urlopen中的文件“/usr/lib/python3/dist packages/urllib3/connectionpool.py”,第720行
方法,url,error=e,_pool=self,_stacktrace=sys.exc_info()[2]
文件“/usr/lib/python3/dist packages/urllib3/util/retry.py”,第400行,增量
升起六个。重新升起(类型(错误),错误,_stacktrace)
文件“/usr/lib/python3/dist-packages/six.py”,第702行,在reraise中
通过_回溯(tb)提升值
文件“/usr/lib/python3/dist packages/urllib3/connectionpool.py”,urlopen中的第672行
分块的,
文件“/usr/lib/python3/dist packages/urllib3/connectionpool.py”,第387行,在请求中
conn.request(方法,url,**httplib\u request\u kw)
请求中的文件“/usr/lib/python3.6/http/client.py”,第1287行
self.\u发送\u请求(方法、url、正文、标题、编码\u分块)
文件“/usr/lib/python3.6/http/client.py”,第1333行,在发送请求中
self.endheaders(body,encode\u chunked=encode\u chunked)
文件“/usr/lib/python3.6/http/client.py”,第1282行,在endheaders中
self.\u发送\u输出(消息体,encode\u chunked=encode\u chunked)
文件“/usr/lib/python3.6/http/client.py”,第1042行,在发送输出中
self.send(msg)
文件“/usr/lib/python3.6/http/client.py”,第980行,在send中
self.connect()
文件“/usr/local/lib/python3.6/dist packages/docker/transport/unixconn.py”,第43行,在connect中
sock.connect(self.unix\u套接字)
urllib3.exceptions.ProtocolError:(“连接已中止”,FileNotFoundError(2,“无此类文件或目录”))
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/dist-packages/docker/api/client.py”,第205行,检索服务器版本
返回self.version(api_version=False)[“ApiVersion”]
文件“/usr/local/lib/python3.6/dist-packages/docker/api/daemon.py”,第181行,版本
返回self.\u结果(self.\u get(url),json=True)
文件“/usr/local/lib/python3.6/dist-packages/docker/utils/decorators.py”,第46行,在内部
返回f(自,*args,**kwargs)
文件“/usr/local/lib/python3.6/dist-packages/docker/api/client.py”,第228行,在
返回self.get(url,**self.\u set\u request\u timeout(kwargs))
文件“/usr/lib/python3/dist packages/requests/sessions.py”,get中的第546行
返回self.request('GET',url,**kwargs)
文件“/usr/lib/python3/dist packages/requests/sessions.py”,请求中的第533行
resp=自我发送(准备,**发送)
文件“/usr/lib/python3/dist packages/requests/sessions.py”,第646行,在send中
r=适配器.send(请求,**kwargs)
文件“/usr/lib/python3/dist packages/requests/adapters.py”,第498行,在send中
raise CONNECTIONERR(错误,请求=请求)
requests.exceptions.ConnectionError:(“连接中止”,FileNotFoundError(2,“没有这样的文件或目录”))
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“***.py”,第4行,在
postgres_容器=postgres容器(“postgres:9.5”)
文件“/usr/local/lib/python3.6/dist packages/testcontainers/postgres.py”,第36行,在__
超级(PostgresContainer,self)。\uuuu初始化(image=image)
文件“/usr/local/lib/python3.6/dist packages/testcontainers/core/generic.py”,第21行,在__
超级(DbContainer,self)。\uuuu init\uuuuu(图像)
文件“/usr/local/lib/python3.6/dist packages/testcontainers/core/container.py”,第16行,在__
self.\u docker=DockerClient()
文件“/usr/local/lib/python3.6/dist-packages/testcontainers/core/docker\u-client.py”,第23行,在__
self.client=docker.from_env()
文件“/usr/local/lib/python3.6/dist packages/docker/client.py”,第85行,from_env
超时=超时,版本=版本,**kwargs_from_env(**kwargs)
文件“/usr/local/lib/python3.6/dist-packages/docker/client.py”,第40行,在__
self.api=APIClient(*args,**kwargs)
文件“/usr/local/lib/python3.6/dist-packages/docker/api/client.py”,第188行,在__
self.\u version=self.\u检索\u服务器\u版本()
文件“/usr/local/lib/python3.6/dist-packages/docker/api/client.py”,第213行,在服务器版本中
'获取服务器API版本时出错:{0}'。格式(e)
docker.errors.DockerException:获取服务器API版本时出错:(“连接已中止”,FileNotFoundError(2,“无此类文件或目录”))
在中忽略异常:
回溯(mo)