我正在使用lambda码头底图作为python3.9 3.9的底图。
FROM public.ecr.aws/lambda/python:3.9
我正试图在我的代码中使用精神科。下面是一个最低可重现性的例子:
Dockerfile
# This works!
# FROM python:3.9
# This doesn't work
FROM public.ecr.aws/lambda/python:3.9
RUN pip install psycopg
COPY . .
ENTRYPOINT ["python", "script.py"]
script.py
# I'm running these docker commands
# docker build -t test .
# docker rune test
import psycopg
psycopg.connect("host=localhost")
print('hello world')
使用python3.9基本图像,我看到了正确的输出。使用AWS lambda基本图像,我看到:
Traceback (most recent call last):
File "/var/task/script.py", line 4, in <module>
import psycopg
File "/var/lang/lib/python3.9/site-packages/psycopg/__init__.py", line 9, in <module>
from . import pq # noqa: F401 import early to stabilize side effects
File "/var/lang/lib/python3.9/site-packages/psycopg/pq/__init__.py", line 114, in <module>
import_from_libpq()
File "/var/lang/lib/python3.9/site-packages/psycopg/pq/__init__.py", line 106, in import_from_libpq
raise ImportError(
ImportError: no pq wrapper available.
Attempts made:
- couldn't import psycopg 'c' implementation: No module named 'psycopg_c'
- couldn't import psycopg 'binary' implementation: No module named 'psycopg_binary'
- couldn't import psycopg 'python' implementation: /lib64/libpq.so.5: undefined symbol: PQconninfo
我尝试过安装内核二进制文件,但是我的新错误是:Traceback (most recent call last): File "/var/task/script.py", line 4, in <module> import psycopg ModuleNotFoundError: No module named 'psycopg'
我想找到一种在Lambda函数中使用心理学的方法。我们使用psycopg2的功能比较老,但是缺乏维护是令人担忧的(内核函数看起来更活跃+支持postgres、v14+和python3.9+),所以我们想转到内核(它现在已经发布了第3版)。
谢谢你提前提供帮助
发布于 2022-06-10 08:24:33
我们完全放弃了心理学,移到了pg8000
,这是一个纯python实现,我们编写的所有代码都可以轻松地移植。这样,我们就不用担心二进制文件或其他无稽之谈了。
https://github.com/tlocke/pg8000
然后,简单的pip install pg8000
是我们所需的全部Dockerfile,import pg8000.native
在我们的script.py
文件中。
https://stackoverflow.com/questions/72555603
复制相似问题