Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【公告】bilibili_api PyInstaller 打包相关 #39

Closed
Nemo2011 opened this issue Aug 13, 2022 · 4 comments
Closed

【公告】bilibili_api PyInstaller 打包相关 #39

Nemo2011 opened this issue Aug 13, 2022 · 4 comments
Labels
notice 公告

Comments

@Nemo2011
Copy link
Owner

Nemo2011 commented Aug 13, 2022

bilibili_api 在 pyinstaller 打包的时候需要把许多的数据(如分区数据、API 数据)打进 exe 文件里面,目前 setup.py 已经添加了在 Pyinstaller 打包的时候自动把 bilibili_api 的相关文件打包进去的功能。

如果你在运行打包后的 exe 程序时出现:'NoneType' object is not subscriptable,则代表 bilibili_api 的数据没有打包进去。请按照如下步骤解决:

    1. 找到你的 python 模块目录(dist-packages 目录或 site-packages 目录)
    1. python 模块目录/PyInstaller/hooks 下新建文件 hook-bilibili_api.py
    1. hook-bilibili_api.py 文件中写入:
from PyInstaller.utils.hooks import collect_data_files

datas = collect_data_files("bilibili_api")

执行完以下步骤一般就能解决问题了。如果你的问题仍然没有解决,请发出你的 exe 文件的错误, PyInstaller 日志, 以便解决问题。

@Nemo2011 Nemo2011 pinned this issue Aug 13, 2022
@cancundeyingzi
Copy link

顶一下,一般来说默认安装的话目录在这里,贴一下防止有人说找不到
C:\Users\用户名\AppData\Local\Programs\Python\Python310\Lib\site-packages\PyInstaller\hooks位置创建hook-bilibili_api.py
image

@Nemo2011 Nemo2011 changed the title 论 bilibili_api PyInstaller 打包 【公告】bilibili_api PyInstaller 打包相关 Jan 22, 2023
@Nemo2011 Nemo2011 added the notice 公告 label Jan 22, 2023
@z0z0r4 z0z0r4 unpinned this issue Jul 8, 2023
@z0z0r4 z0z0r4 pinned this issue Jul 25, 2023
@mathgirl796
Copy link

mathgirl796 commented Aug 12, 2023

用py脚本可以连接到服务器,pyinstaller打包后无法连接至服务器。错误信息如下:

[1064583][2023-08-12 23:19:11,293][INFO] 准备连接直播间 1064583

[1064583][2023-08-12 23:19:11,768][INFO] 正在尝试连接主机: wss://broadcastlv.chat.bilibili.com:443/sub
[1064583][2023-08-12 23:19:11,844][WARNING] stdlib ssl module not available
[1064583][2023-08-12 23:19:11,844][WARNING] 将在 1 秒后重新连接...
(重复多次后)

[1064583][2023-08-12 23:19:22,455][ERROR] 无法连接服务器

注:修改live.py log代码后详细的错误信息为 - <class 'RuntimeError'>, RuntimeError('stdlib ssl module not available')

查询“stdlib ssl module not available”,找到SSL module is not available,按照指示在此下载安装重启电脑后重试,仍无效。

又尝试了pyinstaller.exe .\1064583.py --hidden-import ssl,无效

一顿定位应该是发生在live.py 943行async with session.ws_connect(uri) as ws处,可能是pyinstaller和aiohttp或者ssl模块之间有什么问题

pyinstaller日志如下

(base) PS C:\Users\Aduan\Desktop> pyinstaller.exe .\1064583.py
526 INFO: PyInstaller: 5.12.0
526 INFO: Python: 3.10.8 (conda)
543 INFO: Platform: Windows-10-10.0.22621-SP0
544 INFO: wrote C:\Users\Aduan\Desktop\1064583.spec
546 INFO: UPX is not available.
548 INFO: Extending PYTHONPATH with paths
['C:\\Users\\Aduan\\Desktop']
1761 INFO: checking Analysis
1797 INFO: Building because C:\Users\Aduan\Desktop\1064583.py changed
1797 INFO: Initializing module dependency graph...
1800 INFO: Caching module graph hooks...
1818 INFO: Analyzing base_library.zip ...
4175 INFO: Loading module hook 'hook-heapq.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
4266 INFO: Loading module hook 'hook-encodings.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
6028 INFO: Loading module hook 'hook-pickle.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
7522 INFO: Caching module dependency graph...
7665 INFO: running Analysis Analysis-00.toc
7684 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
  required by C:\Users\Aduan\AppData\Local\miniconda3\python.exe
7879 INFO: Analyzing C:\Users\Aduan\Desktop\1064583.py
7909 INFO: Loading module hook 'hook-PyQt5.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
8189 INFO: Loading module hook 'hook-multiprocessing.util.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
8334 INFO: Loading module hook 'hook-xml.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
8681 INFO: Loading module hook 'hook-bilibili_api.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\bilibili_api\\_pyinstaller'...
9089 INFO: Loading module hook 'hook-platform.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
9391 INFO: Loading module hook 'hook-certifi.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
9971 INFO: Loading module hook 'hook-anyio.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
11691 INFO: Loading module hook 'hook-difflib.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
11834 INFO: Loading module hook 'hook-PIL.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
11942 INFO: Loading module hook 'hook-PIL.Image.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
12793 INFO: Loading module hook 'hook-pycparser.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
13248 INFO: Processing pre-find module path hook distutils from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks\\pre_find_module_path\\hook-distutils.py'.
13665 INFO: Loading module hook 'hook-distutils.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
13713 INFO: Loading module hook 'hook-distutils.util.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
13742 INFO: Loading module hook 'hook-sysconfig.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
14021 INFO: Loading module hook 'hook-setuptools.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
16364 INFO: Loading module hook 'hook-pkg_resources.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
18864 INFO: Loading module hook 'hook-numpy.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\Lib\\site-packages\\numpy\\_pyinstaller'...
18919 WARNING: Conda distribution 'numpy', dependency of 'numpy', was not found. If you installed this distribution with pip then you may ignore this warning.
20923 INFO: Loading module hook 'hook-PIL.ImageFilter.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
21671 INFO: Loading module hook 'hook-charset_normalizer.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
21831 INFO: Loading module hook 'hook-lxml.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
23127 INFO: Loading module hook 'hook-cryptography.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
26712 INFO: Loading module hook 'hook-xml.dom.domreg.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
28006 INFO: Loading module hook 'hook-apscheduler.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
28927 INFO: Loading module hook 'hook-zoneinfo.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
29062 INFO: Loading module hook 'hook-pytz.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
29410 INFO: Processing module hooks...
29682 INFO: Loading module hook 'hook-lxml.etree.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
29956 INFO: Loading module hook 'hook-lxml.isoschematron.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
30253 INFO: Loading module hook 'hook-PIL.SpiderImagePlugin.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
30321 INFO: Processing pre-safe import module hook win32com from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\pre_safe_import_module\\hook-win32com.py'.
30410 INFO: Loading module hook 'hook-win32com.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
30411 INFO: Loading module hook 'hook-pythoncom.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
30776 INFO: Loading module hook 'hook-pywintypes.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
31846 WARNING: Hidden import "sip" not found!
31847 INFO: Loading module hook 'hook-PyQt5.QtCore.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
31987 INFO: Loading module hook 'hook-PyQt5.QtWidgets.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
32179 INFO: Loading module hook 'hook-setuptools.msvc.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
33680 INFO: Loading module hook 'hook-_tkinter.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
33681 INFO: checking Tree
33725 INFO: checking Tree
33738 INFO: checking Tree
33741 INFO: Loading module hook 'hook-lxml.objectify.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
33742 INFO: Loading module hook 'hook-tzdata.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
35709 INFO: Loading module hook 'hook-PyQt5.QtGui.py' from 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks'...
35988 INFO: Looking for ctypes DLLs
36018 INFO: Analyzing run-time hooks ...
36027 INFO: Including run-time hook 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py'
36029 INFO: Including run-time hook 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pyqt5.py'
36030 INFO: Including run-time hook 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py'
36034 INFO: Including run-time hook 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_setuptools.py'
36035 INFO: Including run-time hook 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgres.py'
36040 INFO: Including run-time hook 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_win32comgenpy.py'
36043 INFO: Including run-time hook 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_pywintypes.py'
36044 INFO: Including run-time hook 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_pythoncom.py'
36045 INFO: Including run-time hook 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py'
36047 INFO: Including run-time hook 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth__tkinter.py'
36228 INFO: Looking for dynamic libraries
594 INFO: Using Qt Implementation: PyQt5
C:\Users\Aduan\AppData\Local\miniconda3\lib\site-packages\PyInstaller\building\build_main.py:177: UserWarning: The numpy.array_api submodule is still experimental. See NEP 47.
  __import__(package)
1357 INFO: Extra DLL search directories (AddDllDirectory): ['C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyQt5\\Qt5\\bin', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\numpy\\.libs']
1357 INFO: Extra DLL search directories (PATH): ['C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyQt5\\Qt5\\bin', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\Library\\mingw-w64\\bin', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\Library\\usr\\bin', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\Library\\bin', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\Scripts', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\bin', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\condabin', 'C:\\Windows\\system32', 'C:\\Windows', 'C:\\Windows\\System32\\Wbem', 'C:\\Windows\\System32\\WindowsPowerShell\\v1.0', 'C:\\Windows\\System32\\OpenSSH', 'C:\\Program Files\\Git\\cmd', 'D:\\Software\\mpv', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\Library\\mingw-w64\\bin', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\Library\\usr\\bin', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\Library\\bin', 'C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\Scripts', 'C:\\Users\\Aduan\\AppData\\Local\\Microsoft\\WindowsApps', 'C:\\Users\\Aduan\\AppData\\Local\\Programs\\Microsoft VS Code\\bin']
39274 INFO: Looking for eggs
39306 INFO: Using Python library C:\Users\Aduan\AppData\Local\miniconda3\python310.dll
39307 INFO: Found binding redirects:
[]
39324 INFO: Warnings written to C:\Users\Aduan\Desktop\build\1064583\warn-1064583.txt
39510 INFO: Graph cross-reference written to C:\Users\Aduan\Desktop\build\1064583\xref-1064583.html
39620 INFO: checking PYZ
39668 INFO: checking PKG
39669 INFO: Building because C:\Users\Aduan\Desktop\1064583.py changed
39669 INFO: Building PKG (CArchive) 1064583.pkg
39688 INFO: Building PKG (CArchive) 1064583.pkg completed successfully.
39689 INFO: Bootloader C:\Users\Aduan\AppData\Local\miniconda3\lib\site-packages\PyInstaller\bootloader\Windows-64bit-intel\run.exe
39689 INFO: checking EXE
39691 INFO: Rebuilding EXE-00.toc because pkg is more recent
39691 INFO: Building EXE from EXE-00.toc
39692 INFO: Copying bootloader EXE to C:\Users\Aduan\Desktop\build\1064583\1064583.exe.notanexecutable
39729 INFO: Copying icon to EXE
39729 INFO: Copying icons from ['C:\\Users\\Aduan\\AppData\\Local\\miniconda3\\lib\\site-packages\\PyInstaller\\bootloader\\images\\icon-console.ico']
39757 INFO: Writing RT_GROUP_ICON 0 resource with 104 bytes
39757 INFO: Writing RT_ICON 1 resource with 3752 bytes
39757 INFO: Writing RT_ICON 2 resource with 2216 bytes
39757 INFO: Writing RT_ICON 3 resource with 1384 bytes
39758 INFO: Writing RT_ICON 4 resource with 37019 bytes
39758 INFO: Writing RT_ICON 5 resource with 9640 bytes
39758 INFO: Writing RT_ICON 6 resource with 4264 bytes
39758 INFO: Writing RT_ICON 7 resource with 1128 bytes
39760 INFO: Copying 0 resources to EXE
39761 INFO: Embedding manifest in EXE
39761 INFO: Updating manifest in C:\Users\Aduan\Desktop\build\1064583\1064583.exe.notanexecutable
39789 INFO: Updating resource type 24 name 1 language 0
39791 INFO: Appending PKG archive to EXE
39799 INFO: Fixing EXE headers
40061 INFO: Building EXE from EXE-00.toc completed successfully.
40106 INFO: checking COLLECT
WARNING: The output directory "C:\Users\Aduan\Desktop\dist\1064583" and ALL ITS CONTENTS will be REMOVED! Continue? (y/N)y
On your own risk, you can use the option `--noconfirm` to get rid of this question.
62862 INFO: Removing dir C:\Users\Aduan\Desktop\dist\1064583
63293 INFO: Building COLLECT COLLECT-00.toc
65815 INFO: Building COLLECT COLLECT-00.toc completed successfully.

程序源代码如下:

import sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QLineEdit, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt
from time import strftime
from concurrent.futures import ThreadPoolExecutor
import pyttsx4
from bilibili_api import live
import asyncio
import qasync
import os
import logging
import json


class Window(QMainWindow):
    def __init__(self):
        super().__init__()
        # 朗读功能
        self.pool = ThreadPoolExecutor(max_workers=1)
        self.speak = lambda text: self.pool.submit(pyttsx4.speak, text)
        # 初始化UI
        self.setupUI()

    def setupUI(self):
        self.setWindowTitle('tts')
        self.setStyleSheet("background-color: transparent;")  # 设置窗口背景为透明
        self.resize(300, 500)

        self.text_box = QTextEdit(self)
        self.text_box.setReadOnly(True)
        self.text_box.setStyleSheet('color:white')

        self.entry = QLineEdit(self)
        self.entry.returnPressed.connect(self.on_enter)
        self.entry.setStyleSheet('color:white')

        self.layout = QVBoxLayout()
        self.layout.addWidget(self.text_box)
        self.layout.addWidget(self.entry)

        self.widget = QWidget(self)
        self.widget.setLayout(self.layout)
        self.setCentralWidget(self.widget)

        self.entry.setFocus(Qt.FocusReason.OtherFocusReason)

    def log_and_speak(self, text:str, read:str=None):
        # 发送到聊天框
        self.text_box.append(f"[{strftime('%H:%M:%S')}] {text}")
        # 朗读信息
        self.speak(text if read is None else read)

    def on_enter(self):
        if self.entry.text() != "":
            self.log_and_speak(self.entry.text())
            self.entry.clear()


async def main():
    # basic
    window = Window()
    window.show()
    roomid = os.path.basename(sys.argv[0]).split('.')[0]
    room = live.LiveDanmaku(roomid)

    # log
    file_handler = logging.FileHandler(filename=f'{roomid}.log', mode='a', encoding='utf8')
    file_handler.setFormatter(logging.Formatter(fmt='%(asctime)s - %(levelname)s: %(message)s'))
    file_handler.setLevel(logging.DEBUG)
    logger = logging.getLogger(f'{roomid}')
    logger.setLevel(logging.DEBUG)
    logger.addHandler(file_handler)

    @room.on('DANMU_MSG')
    async def on_DANMU_MSG(event):
        # 收到弹幕
        uname = event['data']['info'][2][1]
        text = event['data']['info'][1]
        window.log_and_speak(f'{uname}{text}', f'{uname}说:{text}')

    @room.on('SEND_GIFT')
    async def on_SEND_GIFT(event):
        # 收到礼物'
        uname = event['data']['data']['uname']
        action = event['data']['data']['action']
        giftName = event['data']['data']['giftName']
        num = event['data']['data']['num']
        window.log_and_speak(f'{uname} {action} {giftName},数量 {num}')

    @room.on('INTERACT_WORD')
    async def on_INTERACT_WORD(event):
        # 有人进入直播间
        uname = event['data']['data']['uname']
        window.log_and_speak(f'{uname} 进入直播间')

    @room.on('LIVE')
    async def on_LIVE(event):
        # 直播开始
        roomid = event['data']['roomid']
        window.log_and_speak(f'直播开始,房间号{roomid}')

    @room.on('VERIFICATION_SUCCESSFUL')
    async def on_VERIFICATION_SUCCESSFUL(event):
        # 成功连接到直播间
        room_display_id = event['room_display_id']
        window.log_and_speak(f'已成功连接至房间:{room_display_id}')
    

    @room.on('ALL')
    async def on_all(event):
        # 日志
        logger.info(json.dumps(event))

    await room.connect()

if __name__ == "__main__":
    try:
        qasync.run(main())
    except asyncio.exceptions.CancelledError:
        sys.exit(0)

@mathgirl796
Copy link

mathgirl796 commented Aug 12, 2023

用py脚本可以连接到服务器,pyinstaller打包后无法连接至服务器。错误信息如下:

[1064583][2023-08-12 23:19:11,293][INFO] 准备连接直播间 1064583

[1064583][2023-08-12 23:19:11,768][INFO] 正在尝试连接主机: wss://broadcastlv.chat.bilibili.com:443/sub
[1064583][2023-08-12 23:19:11,844][WARNING] stdlib ssl module not available
[1064583][2023-08-12 23:19:11,844][WARNING] 将在 1 秒后重新连接...
(重复多次后)

[1064583][2023-08-12 23:19:22,455][ERROR] 无法连接服务器

注:修改live.py log代码后详细的错误信息为 - <class 'RuntimeError'>, RuntimeError('stdlib ssl module not available')

查询“stdlib ssl module not available”,找到SSL module is not available,按照指示在此下载安装重启电脑后重试,仍无效。

又尝试了pyinstaller.exe .\1064583.py --hidden-import ssl,无效

一顿定位应该是发生在live.py 943行async with session.ws_connect(uri) as ws处,可能是pyinstaller和aiohttp或者ssl模块之间有什么问题

pyinstaller日志如下

程序源代码如下:

解决了。去翻了pyinstaller的和aiohttp相关的issue,偶然发现一个维护者怒骂conda,于是下了个官方版的python3.9(不是最新版是为了配合qasync模块),再打包pyinstaller,可以建立网络连接了。

@mathgirl796
Copy link

顶一下,一般来说默认安装的话目录在这里,贴一下防止有人说找不到 C:\Users\用户名\AppData\Local\Programs\Python\Python310\Lib\site-packages\PyInstaller\hooks位置创建hook-bilibili_api.py image

微软语音模块的问题,我也遇到了,并且搜到了解决方法,我用的是pyttsx4,所以正好能解决。

pyttsx4中有一段这样的代码

        # import driver module
        name = 'pyttsx4.drivers.%s' % driverName
        self._module = importlib.import_module(name)

估计是importlib这个操作导致pyinstaller无法识别。如果用win32com的话可能会有类似的解法吧。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
notice 公告
Projects
None yet
Development

No branches or pull requests

3 participants