You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Reple.it运行PyQt5代码遇ImportError:libGL.so.1缺失求修复

修复Replit平台运行PyQt5时的libGL.so.1缺失错误

问题描述

在Replit平台运行自行编写的PyQt5简易浏览器代码,代码语法无问题,但触发以下ImportError:

Traceback (most recent call last):
 File "main.py", line 3 in <module>
   from  PyQt5.QtWidgets import *
ImportError: libGL.so.1:cannot open shared object file:
no such file directory

原因分析

libGL.so.1是OpenGL图形库的运行时依赖文件,Replit默认环境未预装该库,而PyQt5(尤其是QtWebEngine组件)需要它来渲染图形界面。

修复方案

方案1:通过Shell手动安装依赖

在Replit的Shell面板中执行以下命令:

apt-get update && apt-get install -y libgl1-mesa-glx

等待安装完成后,重新运行代码即可。

方案2:修改Replit环境配置文件

  1. 在项目文件列表中找到replit.nix文件(如果没有,可手动创建)
  2. 打开文件,在deps数组中添加pkgs.libglvnd,示例配置如下:
{ pkgs }: {
  deps = [
    pkgs.python310Full
    pkgs.libglvnd
  ];
  env = {};
}
  1. 保存文件,Replit会自动检测配置变更并安装依赖,之后重新运行代码。

验证

安装完成后,重新执行你的PyQt5代码,应该能正常启动浏览器界面。

附用户提供的代码:

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *


class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.browser = QWebEngineView()
        self.browser.setUrl(QUrl('https://google.com'))
        self.setCentralWidget(self.browser)
        self.showMaximized()

        navbar = QToolBar()
        self.addToolBar(navbar)
        back_btn = QAction('Back', self)
        back_btn.triggered.connect(self.browser.back)
        navbar.addAction(back_btn)

        forward_btn = QAction('Forward', self)
        forward_btn.triggered.connect(self.browser.forward)
        navbar.addAction(forward_btn)

        reload_btn = QAction('Reload', self)
        reload_btn.triggered.connect(self.browser.reload)
        navbar.addAction(reload_btn)

        home_btn = QAction('Home', self)
        home_btn.triggered.connect(self.navigate_home)
        navbar.addAction(home_btn)

        self.url_bar = QLineEdit()
        self.url_bar.returnPressed.connect(self.navigate_to_url)
        navbar.addWidget(self.url_bar)

        self.browser.urlChanged.connect(self.update_url)

    def navigate_home(self):
        self.browser.setUrl(QUrl('https://google.com'))

    def navigate_to_url(self):
        url = self.url_bar.text()
        self.browser.setUrl(QUrl(url))

    def update_url(self, q):
        self.url_bar.setText(q.toString())


app = QApplication(sys.argv)
QApplication.setApplicationName("Adrians first browser")
window = MainWindow()
app.exec()

内容的提问来源于stack exchange,提问作者TurnipYossarian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:10:23