(AWS/Docker 问题)“PlaywrightContextManager”对象没有属性“_playwright”/未找到“GLIBC_2.27”

问题描述 投票:0回答:1

总体而言,该脚本从 S3 存储桶中获取 URL 文件,制作每个 URL 的屏幕截图,并将其保存到不同的 S3 存储桶中。打开 S3 存储桶并对其进行读/写就可以了。然而,实际的截图功能不起作用,只给出了AttributeError。

令人沮丧的是,在本地测试时工作得非常好。当它部署在 AWS 上时,我收到这些错误:

/var/lang/lib/python3.8/site-packages/playwright/driver/node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /var/lang/lib/python3.8/site-packages/playwright/driver/node)
/var/lang/lib/python3.8/site-packages/playwright/driver/node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /var/lang/lib/python3.8/site-packages/playwright/driver/node)

'PlaywrightContextManager' object has no attribute '_playwright'

我尝试使用

p: Playwright = sync_playwright().start()
而不是
with
来调整剧作家初始化。我在互联网上搜索并询问了 ChatGPT,尽管我见过类似的问题,但没有一个能解决我的问题。

我一生都无法弄清楚如何解决这个问题。有什么想法吗?

Python 3.8,Playwright 1.42.0,使用 Windows

from playwright.sync_api import sync_playwright

def playwright_screenshot(url):
    try:
        with sync_playwright() as p:
            browser = p.chromium.launch(headless=True)
            page = browser.new_page()
            page.goto(url)

            image = page.screenshot(full_page=True)
            browser.close()

        logger.info("Screenshot taken successfully")
        return image

    except Exception as ex:
        logger.info(f"Error in playwright_screenshot: {ex}")

这是通过 Dockerfile 在 AWS 中部署的:

FROM public.ecr.aws/lambda/python:3.8

WORKDIR /app

COPY requirements.txt ./requirements.txt
COPY __init__.py .__init__.py
COPY url_screenshot ./url_screenshot

ENV PYTHONPATH "${PYTHONPATH}:/app/(path)"

RUN yum -y clean all && \
    pip install -r myfilepath/requirements.txt \
    playwright install

ENTRYPOINT [ "python", "myfilepath/screenshot.py" ]
python amazon-web-services playwright attributeerror glibc
1个回答
0
投票

发布答案是因为我认为唯一的解决方案是将操作系统从 Amazon Linux 2 更改为 Amazon Linux 2023,别无他法。解决了这个问题,感谢

© www.soinside.com 2019 - 2024. All rights reserved.