在宝塔Python 3.12环境折腾Playwright全记录

      发布在:前端技术      评论:0 条评论

为啥要装这个

接需求需要在服务器上跑自动化截图,选了Playwright,因为比Selenium轻量,而且自带浏览器,不用额外装Chrome。服务器是宝塔面板,CentOS系统,Python版本是宝塔自带的3.12.13,路径贼长:/www/server/pyporject_evn/versions/3.12.13/bin/python3

一开始我天真地以为宝塔那个pyporject_evn就是虚拟环境,结果一看里面有个versions文件夹,才晓得这是Python本体存放处,真正的虚拟环境是宝塔创建项目时才生成的项目名_venv。不过我懒得新建项目,直接拿这个Python裸奔测试。


安装过程

1. 装Python库

先试着用pip装:

/www/server/pyporject_evn/versions/3.12.13/bin/python3 -m pip install playwright

装得挺快,没啥毛病。但我知道光装库不行,还得下浏览器内核。

2. 下载浏览器

执行:

/www/server/pyporject_evn/versions/3.12.13/bin/python3 -m playwright install chromium

下载了几百MB,速度看网速。等了好一会儿,提示下载完成。

3. 写个测试脚本

我参照官方示例写了个test.py,放在同目录下方便执行:

from playwright.sync_api import sync_playwright
import sys

print("? 开始测试 Playwright 环境...")

try:
    with sync_playwright() as p:
        print("? 正在启动 Chromium 浏览器(无头模式)...")
        browser = p.chromium.launch(
            headless=True,
            args=['--no-sandbox', '--disable-setuid-sandbox']
        )

        page = browser.new_page()

        print("? 正在访问  ...")
        # 注意这里 URL 和 timeout 之间用逗号分隔
        page.goto("https://www.baidu.com/",timeout=15000)

        title = page.title()
        print(f"✅ 页面标题获取成功: {title}")

        screenshot_path = "/www/server/pyporject_evn/versions/3.12.13/bin/playwright_test_screenshot.png"
        page.screenshot(path=screenshot_path)
        print(f"? 截图已保存至: {screenshot_path}")

        result = page.evaluate("() => 1 + 1")
        print(f"? JS 计算测试 (1+1): {result}")

        browser.close()
        print("? 测试完全通过!环境没有任何问题。")

except Exception as e:
    print(f"❌ 测试过程中出现错误: {e}")
    sys.exit(1)

然后运行:

/www/server/pyporject_evn/versions/3.12.13/bin/python3 test.py

结果“啪”一下报错了。


遇到的坑和解决办法

坑一:缺少系统图形库 – libatk-1.0.so.0

这次报错长这样:

error while loading shared libraries: libatk-1.0.so.0: cannot open shared object file

一看就是系统缺依赖,Playwright的Chromium需要一堆图形界面库,服务器又没装桌面环境。百度了一圈,发现Playwright自带一个命令能自动装依赖:

/www/server/pyporject_evn/versions/3.12.13/bin/python3 -m playwright install-deps

执行后噼里啪啦装了一堆包,我以为万事大吉,结果再跑还是报同样的错。后来发现我的CentOS默认没有install-deps需要的apt或者某些依赖,干脆手动装了缺失的那几个:

yum install -y atk at-spi2-atk cups-libs libxkbcommon libXcomposite libXdamage libXrandr mesa-libgbm pango cairo alsa-lib

装完再跑,libatk的错没了。

最终测试成功

改完所有错误,再次运行:

/www/server/pyporject_evn/versions/3.12.13/bin/python3 test.py

终于看到了期待的输出:

image

而且截图功能也正常。测试通过,环境可用。


笔记总结

  • 区分Python本体和虚拟环境:宝塔的versions/下是解释器,要用它创建项目时宝塔会自动生成项目名_venv
  • Playwright两步安装pip install playwright是库,playwright install是浏览器内核,缺一不可。
  • 系统依赖跑不掉:服务器无图形界面,必须用install-deps或手动装atklibgbm等库,不然浏览器起不来。

下次再配环境,直接把这篇文章翻出来照着干,省得再踩一遍坑。


相关文章

Nginx 启动时没有任何错误日志就悄悄退出?本文通过宝塔面板的真实案例,详解如何使用 strace 命令追踪系统调用,精准定位因缺少 cjson.so 库导致的 Nginx 启动失败。

CentOS 7 停止维护后,宝塔面板安装 PHP fileinfo 扩展报错 “C compiler cannot create executables”。本文详细分析原因,并提供一套完整、安全的解决方法,包括切换阿里云 Vault 源、修复 GPG 密钥缺失、安装编译器,最终成功安装扩展。

解决Windows宝塔面板无法启动问题,解决方法就是找到C:\BtSoft\panel\script\bt.bat(具体根据自己宝塔安装路径),通过重启面板服务或修复面板即可完成修复面板无法启动的问题

在一次常规的OpenCloudOS 9.4服务器环境搭建中,宝塔面板编译安装PHP 8.2.28时遭遇了令人费解的失败。经过层层排查,最终发现是自定义curl库的libssh2依赖缺失所致。

全面解析2025年个人服务器选购要点,涵盖阿里云、腾讯云、UCloud推荐,内存与带宽建议,宝塔/1Panel环境适配,以及MySQL 5.6/5.7/8.0版本硬件要求对比。

如果你使用了windows版宝塔面板,并且采用nginx 作为WEB服务器,在安装时fastadmin可能会出现页面无法打开的情况。解决办法其实比较简单。以安装的PHP7.3版本为例按照下图的路径找到PHP配置文件打开文件,如下图注释掉try_files $uri = 404;这行代码最后重启PHP,配置即可生效。

热门推荐