Проблемы работы Python Multiprocessing в Windows

Значит проблема такая: написал прогу , которая ютуб гоняет через прокси-сервер nodpi от Lord_of_Rings: https://habr.com/ru/articles/870110/

Код пишу всегда в Linux, запустилась, проверил, всё работает. Затем решил запилить exe-шник под винду, раскопал старый ноут с виндой восьмёркой, и началось…

Ввожу в коммандную строку: python -m starter.py Вывод: введите сюда описание изображения

Ну я такой: ОК, понял Пишу: python -m starter Не тут-то было: введите сюда описание изображения

Код проги лежит на: https://github.com/MATE-linux/Youtube-app-with-nodpi

P.S. Пробовал указать полный путь к интерпретатору. Итог:

введите сюда описание изображения P.P.S. ошибка была в использование python3 в subprocess, исправил на python, однако путь с использованием subprocess был неверен, т.к. после компиляции он не имеет смысла. Сейчас я переписал весь код в один файл, однако теперь он не запускается в винде совсем. Логи тоже отсутствуют. При компиляции в 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()

Ответы (1 шт):

Автор решения: MA TE

Путь через subprocess был ошибочен. А multiprocessing конфликтовал с asyncio. Переработал код на threading и ошибка исправлена

→ Ссылка