RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-697358

MA TE's questions

Martin Hope
MA TE
Asked: 2025-03-17 18:47:51 +0000 UTC

windows 7下编译pyqt5的问题

  • 4

我编写了代码,使用了 pyqt5、线程、asyncio。我编译了一个可执行文件,并且由于代码还需要一个图像和一个带有地址的文件,因此我使用 inno setup 编译了一个安装程序。适用于 Windows 8。安装、检查,一切正常。我在 Windows 10 上安装了它,检查了一下,它可以运行。我给了用户 Windows 7,他安装了它,启动了它,结果:在此处输入图片描述 它不起作用。请帮帮我。代码和安装程序位于: https://github.com/MATE-linux/Youtube-app-with-nodpi

python
  • 1 个回答
  • 24 Views
Martin Hope
MA TE
Asked: 2025-03-13 17:19:46 +0000 UTC

Windows 上的 Python 多处理问题

  • 4

所以问题是这样的:我编写了一个通过 Lord_of_Rings 的 nodpi 代理服务器运行 YouTube 的程序:https://habr.com/ru/articles/870110/

我总是在 Linux 中编写代码,我启动它,检查它,一切正常。然后我决定为 Windows 制作一个 .exe 文件,挖出一台装有 Windows 8 的旧笔记本电脑,一切就开始了......

我在命令行输入: python -m starter.py 输出: 在此处输入图片描述

嗯,我的反应是:好的,我明白了。我写道:python -m starter 没办法: 在此处输入图片描述

程序代码位于:https://github.com/MATE-linux/Youtube-app-with-nodpi

附言我尝试指定解释器的完整路径。结果:

在此处输入图片描述 PPS 错误是在子进程中使用 python3 时发生的,已在 python 中更正,但是使用子进程的路径不正确,因为编译后它没有意义。现在我已将所有代码重写到一个文件中,但现在它根本无法在 Windows 中运行。日志也丢失了。在 Linux 中编译时它看不到网络。以下是更新后的代码:

import random
import asyncio
BLOCKED = [line.rstrip().encode() for line in open('blacklist.txt', 'r', encoding='utf-8')]
TASKS = []
async def main(host, port):
    server = await asyncio.start_server(new_conn, host, port)
    await server.serve_forever()
async def pipe(reader, writer):
    while not reader.at_eof() and not writer.is_closing():
        try:
            writer.write(await reader.read(1500))
            await writer.drain()
        except:
            break
    writer.close()
async def new_conn(local_reader, local_writer):
    http_data = await local_reader.read(1500)
    try:
        type, target = http_data.split(b"\r\n")[0].split(b" ")[0:2]
        host, port = target.split(b":")
    except:
        local_writer.close()
        return
    if type != b"CONNECT":
        local_writer.close()
        return
    local_writer.write(b'HTTP/1.1 200 OK\n\n')
    await local_writer.drain()
    try:
        remote_reader, remote_writer = await asyncio.open_connection(host, port)
    except:
        local_writer.close()
        return
    if port == b'443':
        await fragemtn_data(local_reader, remote_writer)
    TASKS.append(asyncio.create_task(pipe(local_reader, remote_writer)))
    TASKS.append(asyncio.create_task(pipe(remote_reader, local_writer)))
async def fragemtn_data(local_reader, remote_writer):
    head = await local_reader.read(5)
    data = await local_reader.read(1500)
    parts = []
    if all([data.find(site) == -1 for site in BLOCKED]):
        remote_writer.write(head + data)
        await remote_writer.drain()
        return
    while data:
        part_len = random.randint(1, len(data))
        parts.append(bytes.fromhex("1603") + bytes([random.randint(0, 255)]) + int(
            part_len).to_bytes(2, byteorder='big') + data[0:part_len])
        data = data[part_len:]
    remote_writer.write(b''.join(parts))
    await remote_writer.drain()
def run_function():
    asyncio.run(main(host='127.0.0.1', port=8881))
from multiprocessing import Process
from PyQt5 import QtWebEngineWidgets
from PyQt5 import QtCore, QtGui, QtWidgets, QtNetwork, QtWebEngineWidgets
from PyQt5.QtGui import QIcon
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.webView = QtWebEngineWidgets.QWebEngineView(self.centralwidget)
        self.webView.setUrl(QtCore.QUrl("https://www.youtube.com"))
        self.webView.setObjectName("webView")
        self.gridLayout.addWidget(self.webView, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("Youtube", "Youtube"))
        MainWindow.setWindowIcon(QIcon('youtube.png'))
def interface_window():
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        proxy = QtNetwork.QNetworkProxy()
        proxy.setType(QtNetwork.QNetworkProxy.HttpProxy)
        proxy.setHostName("127.0.0.1")
        proxy.setPort(8881)
        QtNetwork.QNetworkProxy.setApplicationProxy(proxy)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)
        MainWindow.show()
        sys.exit(app.exec_())
def subrun():
    run_function()
def substart():
    interface_window()
def run():
        p1 = Process(target=subrun, args=(), daemon=True)
        p2 = Process(target=substart, args=(), daemon=True)
        p1.start()
        p2.start()
        p1.join()
        p2.join()
if __name__ == '__main__':
    run()
python
  • 1 个回答
  • 55 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5