初始化v 0.0.1 | @xrilang

This commit is contained in:
萌狼蓝天 2024-07-22 21:45:14 +08:00
parent 8e303c40ba
commit 9efc4c13b8
92 changed files with 572001 additions and 120 deletions

View File

@ -1,8 +1,42 @@
## 依赖安装
pip install flask-socketio eventlet
pip install eventlet
pip install pipreqs
pipreqs ./
## 驱动手动下载
### 谷歌浏览器驱动
查看当前谷歌浏览器版本 chrome://version/
谷歌驱动
https://googlechromelabs.github.io/chrome-for-testing/
## 软件打包
### 打包后端
pyinstaller --onefile run_window_v4.py -n "客户端"
### 打包前端
> 不建议打包,建议以服务的方式运行
找到Pyinstaller所在路径打开然后进入hooks文件夹 创建hook-dnspython.py里面填写
```python
from PyInstaller.utils.hooks import collect_submodules
hiddenimports = collect_submodules('dns')
```
还不行的话再创建一个hook-dns.py
```python
from PyInstaller.utils.hooks import collect_submodules
hiddenimports = collect_submodules('dns')
```
然后cmd执行
pyinstaller -F flask_websoket.py -n "客户端" --add-data 'templates:templates' --add-data 'static:static' --hidden-import=eventlet.hubs.epolls --hidden-import=eventlet.hubs.kqueue --hidden-import=eventlet.hubs.selects --hidden-import=engineio.async_drivers.threading

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,219 @@
This file lists modules PyInstaller was not able to find. This does not
necessarily mean this module is required for running your program. Python and
Python 3rd-party packages include a lot of conditional or optional modules. For
example the module 'ntpath' only exists on Windows, whereas the module
'posixpath' only exists on Posix systems.
Types if import:
* top-level: imported at the top-level - look at these first
* conditional: imported within an if-statement
* delayed: imported within a function
* optional: imported within a try-except-statement
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
tracking down the missing module yourself. Thanks!
missing module named _sha512 - imported by random (optional)
missing module named pwd - imported by posixpath (delayed, conditional, optional), shutil (delayed, optional), tarfile (optional), pathlib (delayed, optional), subprocess (delayed, conditional, optional), http.server (delayed, optional), netrc (delayed, conditional), getpass (delayed), backports.tarfile (optional), setuptools._vendor.backports.tarfile (optional), setuptools._distutils.util (delayed, conditional, optional), setuptools._distutils.archive_util (optional), setuptools._distutils.tests.unix_compat (optional), setuptools._distutils.tests.test_util (delayed)
missing module named grp - imported by shutil (delayed, optional), tarfile (optional), pathlib (delayed, optional), subprocess (delayed, conditional, optional), backports.tarfile (optional), setuptools._vendor.backports.tarfile (optional), setuptools._distutils.archive_util (optional), setuptools._distutils.tests.unix_compat (optional)
missing module named posix - imported by os (conditional, optional), shutil (conditional), importlib._bootstrap_external (conditional), posixpath (optional)
missing module named resource - imported by posix (top-level), IPython.utils.timing (optional)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
runtime module named distutils.sysconfig - imported by cffi._shimmed_dist_utils (optional), setuptools._distutils.util (delayed, conditional), setuptools._distutils.extension (delayed), setuptools._distutils.command.build_ext (delayed), setuptools._distutils.command.build_scripts (top-level), setuptools._distutils.cygwinccompiler (delayed), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_util (top-level)
runtime module named distutils - imported by distutils._collections (top-level), distutils._functools (top-level), distutils._itertools (top-level), distutils._log (top-level), distutils._macos_compat (top-level), distutils._modified (top-level), distutils._msvccompiler (top-level), distutils._vendor (top-level), distutils.archive_util (top-level), distutils.bcppcompiler (top-level), distutils.ccompiler (top-level), distutils.cmd (top-level), distutils.command (top-level), distutils.compat (top-level), distutils.config (top-level), distutils.core (top-level), distutils.cygwinccompiler (top-level), distutils.debug (top-level), distutils.dep_util (top-level), distutils.dir_util (top-level), distutils.dist (top-level), distutils.errors (top-level), distutils.extension (top-level), distutils.fancy_getopt (top-level), distutils.file_util (top-level), distutils.filelist (top-level), distutils.log (top-level), distutils.msvc9compiler (top-level), distutils.msvccompiler (top-level), distutils.spawn (top-level), distutils.sysconfig (top-level), distutils.tests (top-level), distutils.text_file (top-level), distutils.unixccompiler (top-level), distutils.util (top-level), distutils.version (top-level), distutils.versionpredicate (top-level), distutils.zosccompiler (top-level), setuptools.discovery (top-level), setuptools.errors (top-level), setuptools.installer (top-level), setuptools.command.egg_info (top-level), setuptools.command.sdist (top-level), setuptools.command.setopt (top-level), setuptools.command.bdist_egg (top-level), setuptools.wheel (delayed), setuptools.command.bdist_wheel (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.util (delayed, conditional), setuptools._distutils.command.build_ext (delayed), setuptools._distutils.command.build_scripts (top-level), setuptools._distutils.command.sdist (top-level), setuptools._distutils.cygwinccompiler (delayed), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_ccompiler (top-level), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_msvc9compiler (delayed), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_util (top-level), setuptools._distutils.tests.test_version (top-level)
missing module named _posixsubprocess - imported by subprocess (conditional), multiprocessing.util (delayed)
missing module named fcntl - imported by subprocess (optional), eventlet.greenio.base (delayed, optional)
runtime module named distutils.util - imported by setuptools._core_metadata (top-level), setuptools.discovery (top-level), setuptools.dist (top-level), setuptools.wheel (top-level), setuptools.command.egg_info (top-level), setuptools.command.setopt (top-level), setuptools._distutils.extension (delayed), setuptools._distutils.unixccompiler (delayed, conditional), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_util (top-level)
missing module named pytest - imported by trio.testing._raises_group (conditional, optional), setuptools._vendor.typeguard._pytest_plugin (conditional), setuptools._distutils.tests.support (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.unix_compat (top-level), setuptools._distutils.tests.test_bdist_dumb (top-level), setuptools._distutils.tests.test_bdist_rpm (top-level), setuptools._distutils.tests.test_build_clib (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_ccompiler (top-level), setuptools._distutils.tests.test_check (top-level), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_config (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_core (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_dist (top-level), setuptools._distutils.tests.test_extension (top-level), setuptools._distutils.tests.test_file_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_data (top-level), setuptools._distutils.tests.test_install_headers (top-level), setuptools._distutils.tests.test_install_lib (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_modified (top-level), setuptools._distutils.tests.test_msvc9compiler (top-level), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_upload (top-level), setuptools._distutils.tests.test_util (top-level), setuptools._distutils.tests.test_version (top-level)
runtime module named distutils.version - imported by setuptools._distutils.tests.test_version (top-level)
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named _scproxy - imported by urllib.request (conditional)
missing module named termios - imported by getpass (optional), tty (top-level), werkzeug._reloader (delayed, optional), click._termui_impl (conditional), IPython.core.page (delayed, optional), prompt_toolkit.input.vt100 (top-level)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
runtime module named distutils.tests.test_config - imported by setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_upload (top-level)
runtime module named distutils.tests - imported by distutils.tests.compat (top-level), distutils.tests.support (top-level), distutils.tests.test_archive_util (top-level), distutils.tests.test_bdist (top-level), distutils.tests.test_bdist_dumb (top-level), distutils.tests.test_bdist_rpm (top-level), distutils.tests.test_build (top-level), distutils.tests.test_build_clib (top-level), distutils.tests.test_build_ext (top-level), distutils.tests.test_build_py (top-level), distutils.tests.test_build_scripts (top-level), distutils.tests.test_ccompiler (top-level), distutils.tests.test_check (top-level), distutils.tests.test_clean (top-level), distutils.tests.test_cmd (top-level), distutils.tests.test_config (top-level), distutils.tests.test_config_cmd (top-level), distutils.tests.test_core (top-level), distutils.tests.test_cygwinccompiler (top-level), distutils.tests.test_dir_util (top-level), distutils.tests.test_dist (top-level), distutils.tests.test_extension (top-level), distutils.tests.test_file_util (top-level), distutils.tests.test_filelist (top-level), distutils.tests.test_install (top-level), distutils.tests.test_install_data (top-level), distutils.tests.test_install_headers (top-level), distutils.tests.test_install_lib (top-level), distutils.tests.test_install_scripts (top-level), distutils.tests.test_log (top-level), distutils.tests.test_mingwccompiler (top-level), distutils.tests.test_modified (top-level), distutils.tests.test_msvc9compiler (top-level), distutils.tests.test_msvccompiler (top-level), distutils.tests.test_register (top-level), distutils.tests.test_sdist (top-level), distutils.tests.test_spawn (top-level), distutils.tests.test_sysconfig (top-level), distutils.tests.test_text_file (top-level), distutils.tests.test_unixccompiler (top-level), distutils.tests.test_upload (top-level), distutils.tests.test_util (top-level), distutils.tests.test_version (top-level), distutils.tests.test_versionpredicate (top-level), distutils.tests.unix_compat (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_bdist (top-level), setuptools._distutils.tests.test_bdist_dumb (top-level), setuptools._distutils.tests.test_bdist_rpm (top-level), setuptools._distutils.tests.test_build (top-level), setuptools._distutils.tests.test_build_clib (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_check (top-level), setuptools._distutils.tests.test_clean (top-level), setuptools._distutils.tests.test_config (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_dist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_data (top-level), setuptools._distutils.tests.test_install_headers (top-level), setuptools._distutils.tests.test_install_lib (top-level), setuptools._distutils.tests.test_install_scripts (top-level), setuptools._distutils.tests.test_modified (top-level), setuptools._distutils.tests.test_msvc9compiler (top-level), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_text_file (top-level)
runtime module named distutils.command.upload - imported by setuptools._distutils.tests.test_upload (top-level)
runtime module named distutils.command - imported by distutils.command._framework_compat (top-level), distutils.command.bdist (top-level), distutils.command.bdist_dumb (top-level), distutils.command.bdist_rpm (top-level), distutils.command.build (top-level), distutils.command.build_clib (top-level), distutils.command.build_ext (top-level), distutils.command.build_py (top-level), distutils.command.build_scripts (top-level), distutils.command.check (top-level), distutils.command.clean (top-level), distutils.command.config (top-level), distutils.command.install (top-level), distutils.command.install_data (top-level), distutils.command.install_egg_info (top-level), distutils.command.install_headers (top-level), distutils.command.install_lib (top-level), distutils.command.install_scripts (top-level), distutils.command.register (top-level), distutils.command.sdist (top-level), distutils.command.upload (top-level), setuptools.dist (top-level), setuptools._distutils.dist (delayed), setuptools._distutils.tests.test_build_ext (delayed), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_upload (top-level)
runtime module named distutils.unixccompiler - imported by setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level)
runtime module named distutils.compat - imported by distutils.compat.py38 (top-level), distutils.compat.py39 (top-level), setuptools._distutils.tests.test_unixccompiler (top-level)
missing module named path - imported by setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_text_file (top-level)
missing module named 'jaraco.path' - imported by setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_dist (top-level), setuptools._distutils.tests.test_file_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_text_file (top-level)
runtime module named distutils.text_file - imported by setuptools._distutils.extension (delayed), setuptools._distutils.sysconfig (delayed), setuptools._distutils.tests.test_text_file (top-level)
missing module named 'jaraco.envs' - imported by setuptools._distutils.tests.test_sysconfig (top-level)
missing module named 'test.support' - imported by setuptools._vendor.importlib_resources.tests.test_functional (optional), setuptools._distutils.tests.compat.py38 (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_sysconfig (top-level)
runtime module named distutils.ccompiler - imported by cffi._shimmed_dist_utils (optional), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_ccompiler (top-level), setuptools._distutils.tests.test_msvccompiler (delayed), setuptools._distutils.tests.test_sysconfig (top-level)
runtime module named distutils.spawn - imported by setuptools._distutils.cmd (delayed), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_spawn (top-level)
runtime module named distutils.filelist - imported by setuptools.monkey (top-level), setuptools.command.egg_info (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_sdist (top-level)
runtime module named distutils.command.sdist - imported by setuptools.command.sdist (top-level), setuptools._distutils.tests.test_sdist (top-level)
runtime module named distutils.archive_util - imported by setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_sdist (top-level)
missing module named docutils - imported by setuptools._distutils.tests.test_register (optional)
runtime module named distutils.command.register - imported by setuptools._distutils.tests.test_register (top-level)
runtime module named distutils._msvccompiler - imported by setuptools._distutils.tests.test_msvccompiler (top-level)
runtime module named distutils.msvc9compiler - imported by cffi._shimmed_dist_utils (conditional, optional), setuptools._distutils.msvccompiler (conditional), setuptools._distutils.tests.test_msvc9compiler (delayed)
runtime module named distutils.msvccompiler - imported by setuptools._distutils.tests.test_msvc9compiler (conditional)
runtime module named distutils._modified - imported by setuptools._distutils.file_util (delayed), setuptools._distutils.tests.test_modified (top-level)
runtime module named distutils.cygwinccompiler - imported by setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_mingwccompiler (delayed)
runtime module named distutils._log - imported by setuptools._distutils.command.bdist_dumb (top-level), setuptools._distutils.command.bdist_rpm (top-level), setuptools._distutils.command.build_clib (top-level), setuptools._distutils.command.build_ext (top-level), setuptools._distutils.command.build_py (top-level), setuptools._distutils.command.build_scripts (top-level), setuptools._distutils.command.clean (top-level), setuptools._distutils.command.config (top-level), setuptools._distutils.command.install (top-level), setuptools._distutils.command.install_scripts (top-level), setuptools._distutils.command.register (top-level), setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_log (top-level)
runtime module named distutils.command.install_scripts - imported by setuptools._distutils.tests.test_install_scripts (top-level)
runtime module named distutils.extension - imported by setuptools.extension (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_extension (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_lib (top-level)
runtime module named distutils.command.install_lib - imported by setuptools._distutils.tests.test_install_lib (top-level)
runtime module named distutils.command.install_headers - imported by setuptools._distutils.tests.test_install_headers (top-level)
runtime module named distutils.command.install_data - imported by setuptools._distutils.tests.test_install_data (top-level)
runtime module named distutils.command.install - imported by setuptools._distutils.tests.test_install (top-level)
missing module named usercustomize - imported by site (delayed, optional)
missing module named sitecustomize - imported by site (delayed, optional)
missing module named readline - imported by code (delayed, conditional, optional), cmd (delayed, conditional, optional), pdb (delayed, optional), pstats (conditional, optional), site (delayed, optional), rlcompleter (optional), flask.cli (delayed, conditional, optional)
missing module named vms_lib - imported by platform (delayed, optional)
missing module named 'java.lang' - imported by platform (delayed, optional)
missing module named java - imported by platform (delayed)
missing module named _winreg - imported by platform (delayed, optional), pygments.formatters.img (optional)
runtime module named distutils.debug - imported by setuptools.dist (top-level), setuptools._distutils.ccompiler (delayed), setuptools._distutils.cmd (delayed), setuptools._distutils.filelist (delayed), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_filelist (top-level)
runtime module named distutils.file_util - imported by setuptools._distutils.dir_util (delayed), setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_file_util (top-level)
runtime module named distutils.tests.test_dist - imported by setuptools._distutils.tests.test_dist (delayed)
runtime module named distutils.dist - imported by setuptools.dist (top-level), setuptools.config.setupcfg (conditional), setuptools.config._apply_pyprojecttoml (conditional), wheel.cli.convert (optional), setuptools._vendor.wheel.cli.convert (optional), setuptools._distutils.cmd (delayed), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_core (top-level), setuptools._distutils.tests.test_dist (top-level)
runtime module named distutils.cmd - imported by setuptools.dist (top-level), setuptools._distutils.dist (delayed), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_dist (top-level)
runtime module named distutils.dir_util - imported by setuptools.command.bdist_egg (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_dir_util (top-level)
runtime module named distutils.command.config - imported by setuptools._distutils.tests.test_config_cmd (top-level)
runtime module named distutils.command.clean - imported by setuptools._distutils.tests.test_clean (top-level)
missing module named pygments.lexers.PrologLexer - imported by pygments.lexers (top-level), pygments.lexers.cplint (top-level)
missing module named pygments.lexers.PythonLexer - imported by pygments.lexers (top-level), IPython.core.oinspect (top-level)
missing module named PIL - imported by matplotlib_inline.config (delayed, optional), pygments.formatters.img (optional)
missing module named ctags - imported by pygments.formatters.html (optional)
missing module named pygments.formatters.LatexFormatter - imported by pygments.formatters (delayed), IPython.lib.display (delayed)
missing module named pygments.formatters.HtmlFormatter - imported by pygments.formatters (delayed), IPython.lib.display (delayed), IPython.core.oinspect (top-level), stack_data.core (delayed)
missing module named chardet - imported by pygments.lexer (delayed, conditional, optional), requests (optional)
runtime module named distutils.command.check - imported by setuptools._distutils.tests.test_check (top-level)
runtime module named distutils.command.build_scripts - imported by setuptools._distutils.tests.test_build_scripts (top-level)
runtime module named distutils.command.build_py - imported by setuptools._distutils.tests.test_build_py (top-level)
missing module named xx - imported by setuptools._distutils.tests.test_build_ext (delayed)
runtime module named distutils.tests.support - imported by setuptools._distutils.tests.test_build_ext (top-level)
runtime module named distutils.command.build_clib - imported by setuptools._distutils.tests.test_build_clib (top-level)
runtime module named distutils.command.build - imported by setuptools.command.build (top-level), setuptools._distutils.tests.test_build (top-level)
runtime module named distutils.command.bdist_rpm - imported by setuptools._distutils.tests.test_bdist_rpm (top-level)
runtime module named distutils.command.bdist_dumb - imported by setuptools._distutils.tests.test_bdist_dumb (top-level)
runtime module named distutils.command.bdist - imported by setuptools.command (top-level), setuptools._distutils.tests.test_bdist (top-level)
runtime module named distutils.versionpredicate - imported by setuptools._distutils.dist (delayed)
runtime module named distutils.fancy_getopt - imported by setuptools.dist (top-level), setuptools._distutils.ccompiler (delayed), setuptools._distutils.cmd (delayed)
missing module named _manylinux - imported by packaging._manylinux (delayed, optional), setuptools._vendor.packaging._manylinux (delayed, optional), wheel.vendored.packaging._manylinux (delayed, optional), setuptools._vendor.wheel.vendored.packaging._manylinux (delayed, optional), setuptools._distutils._vendor.packaging._manylinux (delayed, optional)
missing module named typeshed - imported by typeguard._decorators (conditional)
missing module named 'typeshed.stdlib' - imported by setuptools._vendor.typeguard._decorators (conditional)
missing module named jnius - imported by platformdirs.android (delayed, conditional, optional), setuptools._vendor.platformdirs.android (delayed, conditional, optional)
missing module named android - imported by platformdirs.android (delayed, conditional, optional), setuptools._vendor.platformdirs.android (delayed, conditional, optional)
missing module named mod - imported by setuptools._vendor.importlib_resources.tests.test_files (delayed)
missing module named 'jaraco.test' - imported by setuptools._vendor.importlib_resources.tests.compat.py39 (top-level)
runtime module named distutils.command.build_ext - imported by cffi._shimmed_dist_utils (optional), setuptools (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_install (top-level)
missing module named _typeshed - imported by werkzeug._internal (conditional), pkg_resources (conditional), trio._file_io (conditional), trio._path (conditional), prompt_toolkit.eventloop.inputhook (conditional)
missing module named trove_classifiers - imported by setuptools.config._validate_pyproject.formats (optional)
runtime module named distutils.log - imported by setuptools.logging (top-level), setuptools.discovery (top-level), setuptools.dist (top-level), setuptools.installer (top-level), setuptools.command.egg_info (top-level), setuptools.command.sdist (top-level), setuptools.command.setopt (top-level), setuptools.command.bdist_egg (top-level), setuptools.wheel (delayed), setuptools.command.bdist_wheel (top-level), cffi._shimmed_dist_utils (optional)
runtime module named distutils.errors - imported by setuptools (top-level), setuptools.msvc (top-level), setuptools.errors (top-level), setuptools.dist (top-level), setuptools.config.expand (top-level), setuptools.installer (top-level), setuptools.command.egg_info (top-level), setuptools.command.setopt (top-level), setuptools.extension (top-level), setuptools.archive_util (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_build_clib (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_check (top-level), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_file_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_lib (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_modified (top-level), setuptools._distutils.tests.test_msvc9compiler (top-level), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_upload (top-level), setuptools._distutils.tests.test_util (top-level)
runtime module named distutils.core - imported by setuptools (top-level), setuptools.dist (top-level), setuptools.extension (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.dist (delayed), setuptools._distutils.tests.support (top-level), setuptools._distutils.tests.test_bdist_dumb (top-level), setuptools._distutils.tests.test_bdist_rpm (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_core (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_scripts (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_upload (top-level)
missing module named pyimod02_importers - imported by C:\Users\xrilang\Desktop\ele_fengshen\venv\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed), C:\Users\xrilang\Desktop\ele_fengshen\venv\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py (delayed)
missing module named _curses - imported by curses (top-level), curses.has_key (top-level)
missing module named aiohttp - imported by engineio.async_client (optional)
missing module named wsaccel - imported by websocket._utils (optional)
missing module named 'python_socks.sync' - imported by websocket._http (optional)
missing module named 'python_socks._types' - imported by websocket._http (optional)
missing module named python_socks - imported by websocket._http (optional)
missing module named 'wsaccel.xormask' - imported by websocket._abnf (optional)
missing module named simplejson - imported by requests.compat (conditional, optional)
missing module named dummy_threading - imported by requests.cookies (optional)
missing module named zstandard - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named brotli - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named brotlicffi - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named win_inet_pton - imported by socks (conditional, optional)
missing module named cryptography - imported by werkzeug.serving (delayed, conditional, optional), urllib3.contrib.pyopenssl (top-level), requests (conditional, optional), flask.cli (delayed, conditional, optional)
missing module named 'OpenSSL.crypto' - imported by eventlet.green.OpenSSL.crypto (top-level), urllib3.contrib.pyopenssl (delayed, conditional)
missing module named 'cryptography.x509' - imported by werkzeug.serving (delayed, conditional, optional), urllib3.contrib.pyopenssl (delayed, optional)
missing module named 'OpenSSL.SSL' - imported by eventlet.green.OpenSSL.SSL (top-level), urllib3.contrib.pyopenssl (top-level)
missing module named pyodide - imported by urllib3.contrib.emscripten.fetch (top-level)
missing module named js - imported by urllib3.contrib.emscripten.fetch (top-level)
missing module named monotonic - imported by eventlet.hubs.hub (optional), eventlet (optional)
missing module named itimer - imported by eventlet.hubs.hub (conditional, optional)
missing module named OpenSSL - imported by eventlet.greenio.base (optional), eventlet.green.OpenSSL.SSL (top-level), trio._dtls (delayed, conditional)
missing module named imp - imported by eventlet.patcher (optional), eventlet.tpool (optional), cffi.verifier (conditional), cffi._imp_emulation (optional)
missing module named psycopg2 - imported by eventlet.support.psycopg2_patcher (top-level)
missing module named geventwebsocket - imported by flask_socketio (delayed, conditional, optional)
missing module named gevent - imported by socketio.kombu_manager (delayed, conditional), flask_socketio (delayed, conditional)
missing module named '_typeshed.wsgi' - imported by werkzeug.exceptions (conditional), werkzeug.http (conditional), werkzeug.wsgi (conditional), werkzeug.utils (conditional), werkzeug.wrappers.response (conditional), werkzeug.test (conditional), werkzeug.formparser (conditional), werkzeug.wrappers.request (conditional), werkzeug.serving (conditional), werkzeug.debug (conditional), werkzeug.middleware.shared_data (conditional), werkzeug.local (conditional), werkzeug.routing.exceptions (conditional), werkzeug.routing.map (conditional), flask.typing (conditional), flask.ctx (conditional), flask.testing (conditional), flask.cli (conditional), flask.app (conditional)
missing module named 'cryptography.hazmat' - imported by werkzeug.serving (delayed, optional)
missing module named 'watchdog.observers' - imported by werkzeug._reloader (delayed)
missing module named 'watchdog.events' - imported by werkzeug._reloader (delayed)
missing module named watchdog - imported by werkzeug._reloader (delayed)
missing module named 'yapf.yapflib' - imported by IPython.terminal.interactiveshell (delayed)
missing module named yapf - imported by IPython.terminal.interactiveshell (delayed)
missing module named black - imported by IPython.terminal.interactiveshell (delayed)
missing module named prompt_toolkit.filters.vi_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.document (top-level), prompt_toolkit.key_binding.bindings.page_navigation (top-level), prompt_toolkit.widgets.toolbars (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named 'prompt_toolkit.key_binding.key_bindings.vi' - imported by prompt_toolkit.key_binding.vi_state (conditional)
missing module named 'backports.functools_lru_cache' - imported by wcwidth.wcwidth (optional)
missing module named prompt_toolkit.filters.is_done - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.menus (top-level), prompt_toolkit.widgets.base (top-level), prompt_toolkit.shortcuts.progress_bar.base (top-level), prompt_toolkit.shortcuts.prompt (top-level)
missing module named prompt_toolkit.filters.has_completions - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.menus (top-level), prompt_toolkit.widgets.toolbars (top-level), prompt_toolkit.widgets.dialogs (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named prompt_toolkit.filters.vi_insert_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.containers (top-level), prompt_toolkit.key_binding.bindings.basic (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named prompt_toolkit.filters.emacs_insert_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.containers (top-level), prompt_toolkit.key_binding.bindings.basic (top-level), prompt_toolkit.key_binding.bindings.emacs (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named prompt_toolkit.filters.is_searching - imported by prompt_toolkit.filters (top-level), prompt_toolkit.search (top-level), prompt_toolkit.key_binding.bindings.search (top-level), prompt_toolkit.key_binding.bindings.vi (top-level)
missing module named numpydoc - imported by jedi.inference.docstrings (delayed)
missing module named argcomplete - imported by traitlets.config.loader (delayed, optional), traitlets.config.argcomplete_config (optional)
missing module named traitlets.config.Application - imported by traitlets.config (delayed, conditional), traitlets.log (delayed, conditional)
missing module named sip - imported by IPython.external.qt_loaders (delayed, optional)
missing module named numpy - imported by IPython.lib.display (delayed), IPython.core.formatters (delayed, conditional), IPython.core.magics.namespace (delayed, conditional, optional)
missing module named 'matplotlib.figure' - imported by matplotlib_inline.backend_inline (top-level)
missing module named 'matplotlib._pylab_helpers' - imported by matplotlib_inline.backend_inline (top-level)
missing module named 'matplotlib.backends' - imported by matplotlib_inline.backend_inline (top-level)
missing module named matplotlib - imported by matplotlib_inline.backend_inline (top-level)
missing module named rpds.HashTrieMap - imported by rpds (top-level), referencing._core (top-level), jsonschema._types (top-level), jsonschema.validators (top-level)
missing module named rpds.List - imported by rpds (top-level), referencing._core (top-level)
missing module named rpds.HashTrieSet - imported by rpds (top-level), referencing._core (top-level)
missing module named isoduration - imported by jsonschema._format (top-level)
missing module named uri_template - imported by jsonschema._format (top-level)
missing module named jsonpointer - imported by jsonschema._format (top-level)
missing module named webcolors - imported by jsonschema._format (top-level)
missing module named rfc3339_validator - imported by jsonschema._format (top-level)
missing module named rfc3986_validator - imported by jsonschema._format (optional)
missing module named rfc3987 - imported by jsonschema._format (optional)
missing module named fqdn - imported by jsonschema._format (top-level)
missing module named prompt_toolkit.filters.vi_insert_multiple_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.processors (top-level)
missing module named docrepr - imported by IPython.core.interactiveshell (optional)
missing module named cPickle - imported by pickleshare (optional), pycparser.ply.yacc (delayed, optional)
missing module named pathlib2 - imported by pickleshare (optional)
missing module named _dummy_thread - imported by cffi.lock (conditional, optional), sortedcontainers.sortedlist (conditional, optional)
missing module named dummy_thread - imported by cffi.lock (conditional, optional), sortedcontainers.sortedlist (conditional, optional)
missing module named thread - imported by cffi.lock (conditional, optional), cffi.cparser (conditional, optional), sortedcontainers.sortedlist (conditional, optional)
missing module named cStringIO - imported by cffi.ffiplatform (optional)
missing module named cffi._pycparser - imported by cffi (optional), cffi.cparser (optional)
missing module named 'curio.meta' - imported by sniffio._impl (delayed, conditional)
missing module named exceptiongroup - imported by trio._core._run (conditional), trio._highlevel_open_tcp_listeners (conditional), trio._highlevel_open_tcp_stream (conditional), trio.testing._check_streams (conditional), trio.testing._raises_group (conditional)
missing module named _pytest - imported by trio.testing._raises_group (conditional)
missing module named hypothesis - imported by trio._core._run (delayed)
missing module named tputil - imported by trio._core._concat_tb (optional)
missing module named curio - imported by IPython.core.async_helpers (delayed)
missing module named 'astroid.node_classes' - imported by asttokens.astroid_compat (optional)
missing module named 'astroid.nodes' - imported by asttokens.astroid_compat (optional)
missing module named astroid - imported by asttokens.astroid_compat (optional)
missing module named six.moves.xrange - imported by six.moves (top-level), asttokens.asttokens (top-level)
runtime module named six.moves - imported by asttokens.asttokens (top-level)
missing module named StringIO - imported by six (conditional)
missing module named 'ipykernel.kernelapp' - imported by IPython (delayed)
missing module named ipykernel - imported by IPython (delayed)
missing module named pexpect - imported by IPython.utils._process_posix (top-level)
missing module named System - imported by IPython.utils._process_cli (top-level)
missing module named clr - imported by IPython.utils._process_cli (top-level)
missing module named asgiref - imported by flask.app (delayed, optional)
missing module named socketio.socketio_manage - imported by socketio (optional), flask_socketio (optional)
missing module named aio_pika - imported by socketio.async_aiopika_manager (optional)
missing module named 'aioredis.exceptions' - imported by socketio.async_redis_manager (optional)
missing module named aioredis - imported by socketio.async_redis_manager (optional)
missing module named 'redis.exceptions' - imported by socketio.async_redis_manager (optional)
missing module named redis - imported by socketio.redis_manager (optional), socketio.async_redis_manager (optional)
missing module named kafka - imported by socketio.kafka_manager (optional)
missing module named 'gevent.monkey' - imported by socketio.redis_manager (delayed, conditional)
missing module named kombu - imported by socketio.kombu_manager (optional)
missing module named msgpack - imported by socketio.msgpack_packet (top-level)
missing module named 'OpenSSL.version' - imported by eventlet.green.OpenSSL.version (top-level)
missing module named 'OpenSSL.tsafe' - imported by eventlet.green.OpenSSL.tsafe (top-level)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,211 @@
This file lists modules PyInstaller was not able to find. This does not
necessarily mean this module is required for running your program. Python and
Python 3rd-party packages include a lot of conditional or optional modules. For
example the module 'ntpath' only exists on Windows, whereas the module
'posixpath' only exists on Posix systems.
Types if import:
* top-level: imported at the top-level - look at these first
* conditional: imported within an if-statement
* delayed: imported within a function
* optional: imported within a try-except-statement
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
tracking down the missing module yourself. Thanks!
missing module named _sha512 - imported by random (optional)
missing module named pwd - imported by shutil (delayed, optional), tarfile (optional), pathlib (delayed, optional), subprocess (delayed, conditional, optional), posixpath (delayed, conditional, optional), netrc (delayed, conditional), getpass (delayed), http.server (delayed, optional), backports.tarfile (optional), setuptools._vendor.backports.tarfile (optional), setuptools._distutils.util (delayed, conditional, optional), setuptools._distutils.archive_util (optional), setuptools._distutils.tests.unix_compat (optional), setuptools._distutils.tests.test_util (delayed)
missing module named grp - imported by shutil (delayed, optional), tarfile (optional), pathlib (delayed, optional), subprocess (delayed, conditional, optional), backports.tarfile (optional), setuptools._vendor.backports.tarfile (optional), setuptools._distutils.archive_util (optional), setuptools._distutils.tests.unix_compat (optional)
missing module named posix - imported by shutil (conditional), importlib._bootstrap_external (conditional), os (conditional, optional), posixpath (optional)
missing module named resource - imported by posix (top-level), IPython.utils.timing (optional)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
runtime module named distutils.sysconfig - imported by cffi._shimmed_dist_utils (optional), setuptools._distutils.util (delayed, conditional), setuptools._distutils.extension (delayed), setuptools._distutils.command.build_ext (delayed), setuptools._distutils.command.build_scripts (top-level), setuptools._distutils.cygwinccompiler (delayed), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_util (top-level)
runtime module named distutils - imported by distutils._collections (top-level), distutils._functools (top-level), distutils._itertools (top-level), distutils._log (top-level), distutils._macos_compat (top-level), distutils._modified (top-level), distutils._msvccompiler (top-level), distutils._vendor (top-level), distutils.archive_util (top-level), distutils.bcppcompiler (top-level), distutils.ccompiler (top-level), distutils.cmd (top-level), distutils.command (top-level), distutils.compat (top-level), distutils.config (top-level), distutils.core (top-level), distutils.cygwinccompiler (top-level), distutils.debug (top-level), distutils.dep_util (top-level), distutils.dir_util (top-level), distutils.dist (top-level), distutils.errors (top-level), distutils.extension (top-level), distutils.fancy_getopt (top-level), distutils.file_util (top-level), distutils.filelist (top-level), distutils.log (top-level), distutils.msvc9compiler (top-level), distutils.msvccompiler (top-level), distutils.spawn (top-level), distutils.sysconfig (top-level), distutils.tests (top-level), distutils.text_file (top-level), distutils.unixccompiler (top-level), distutils.util (top-level), distutils.version (top-level), distutils.versionpredicate (top-level), distutils.zosccompiler (top-level), setuptools.discovery (top-level), setuptools.errors (top-level), setuptools.installer (top-level), setuptools.command.egg_info (top-level), setuptools.command.sdist (top-level), setuptools.command.setopt (top-level), setuptools.command.bdist_egg (top-level), setuptools.wheel (delayed), setuptools.command.bdist_wheel (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.util (delayed, conditional), setuptools._distutils.command.build_ext (delayed), setuptools._distutils.command.build_scripts (top-level), setuptools._distutils.command.sdist (top-level), setuptools._distutils.cygwinccompiler (delayed), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_ccompiler (top-level), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_msvc9compiler (delayed), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_util (top-level), setuptools._distutils.tests.test_version (top-level)
missing module named _posixsubprocess - imported by subprocess (conditional), multiprocessing.util (delayed)
missing module named fcntl - imported by subprocess (optional), eventlet.greenio.base (delayed, optional)
runtime module named distutils.util - imported by setuptools._core_metadata (top-level), setuptools.discovery (top-level), setuptools.dist (top-level), setuptools.wheel (top-level), setuptools.command.egg_info (top-level), setuptools.command.setopt (top-level), setuptools._distutils.extension (delayed), setuptools._distutils.unixccompiler (delayed, conditional), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_util (top-level)
missing module named pytest - imported by trio.testing._raises_group (conditional, optional), setuptools._vendor.typeguard._pytest_plugin (conditional), setuptools._distutils.tests.support (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.unix_compat (top-level), setuptools._distutils.tests.test_bdist_dumb (top-level), setuptools._distutils.tests.test_bdist_rpm (top-level), setuptools._distutils.tests.test_build_clib (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_ccompiler (top-level), setuptools._distutils.tests.test_check (top-level), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_config (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_core (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_dist (top-level), setuptools._distutils.tests.test_extension (top-level), setuptools._distutils.tests.test_file_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_data (top-level), setuptools._distutils.tests.test_install_headers (top-level), setuptools._distutils.tests.test_install_lib (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_modified (top-level), setuptools._distutils.tests.test_msvc9compiler (top-level), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_upload (top-level), setuptools._distutils.tests.test_util (top-level), setuptools._distutils.tests.test_version (top-level)
runtime module named distutils.version - imported by setuptools._distutils.tests.test_version (top-level)
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named _scproxy - imported by urllib.request (conditional)
missing module named termios - imported by getpass (optional), tty (top-level), IPython.core.page (delayed, optional), prompt_toolkit.input.vt100 (top-level)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
runtime module named distutils.tests.test_config - imported by setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_upload (top-level)
runtime module named distutils.tests - imported by distutils.tests.compat (top-level), distutils.tests.support (top-level), distutils.tests.test_archive_util (top-level), distutils.tests.test_bdist (top-level), distutils.tests.test_bdist_dumb (top-level), distutils.tests.test_bdist_rpm (top-level), distutils.tests.test_build (top-level), distutils.tests.test_build_clib (top-level), distutils.tests.test_build_ext (top-level), distutils.tests.test_build_py (top-level), distutils.tests.test_build_scripts (top-level), distutils.tests.test_ccompiler (top-level), distutils.tests.test_check (top-level), distutils.tests.test_clean (top-level), distutils.tests.test_cmd (top-level), distutils.tests.test_config (top-level), distutils.tests.test_config_cmd (top-level), distutils.tests.test_core (top-level), distutils.tests.test_cygwinccompiler (top-level), distutils.tests.test_dir_util (top-level), distutils.tests.test_dist (top-level), distutils.tests.test_extension (top-level), distutils.tests.test_file_util (top-level), distutils.tests.test_filelist (top-level), distutils.tests.test_install (top-level), distutils.tests.test_install_data (top-level), distutils.tests.test_install_headers (top-level), distutils.tests.test_install_lib (top-level), distutils.tests.test_install_scripts (top-level), distutils.tests.test_log (top-level), distutils.tests.test_mingwccompiler (top-level), distutils.tests.test_modified (top-level), distutils.tests.test_msvc9compiler (top-level), distutils.tests.test_msvccompiler (top-level), distutils.tests.test_register (top-level), distutils.tests.test_sdist (top-level), distutils.tests.test_spawn (top-level), distutils.tests.test_sysconfig (top-level), distutils.tests.test_text_file (top-level), distutils.tests.test_unixccompiler (top-level), distutils.tests.test_upload (top-level), distutils.tests.test_util (top-level), distutils.tests.test_version (top-level), distutils.tests.test_versionpredicate (top-level), distutils.tests.unix_compat (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_bdist (top-level), setuptools._distutils.tests.test_bdist_dumb (top-level), setuptools._distutils.tests.test_bdist_rpm (top-level), setuptools._distutils.tests.test_build (top-level), setuptools._distutils.tests.test_build_clib (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_check (top-level), setuptools._distutils.tests.test_clean (top-level), setuptools._distutils.tests.test_config (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_dist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_data (top-level), setuptools._distutils.tests.test_install_headers (top-level), setuptools._distutils.tests.test_install_lib (top-level), setuptools._distutils.tests.test_install_scripts (top-level), setuptools._distutils.tests.test_modified (top-level), setuptools._distutils.tests.test_msvc9compiler (top-level), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_text_file (top-level)
runtime module named distutils.command.upload - imported by setuptools._distutils.tests.test_upload (top-level)
runtime module named distutils.command - imported by distutils.command._framework_compat (top-level), distutils.command.bdist (top-level), distutils.command.bdist_dumb (top-level), distutils.command.bdist_rpm (top-level), distutils.command.build (top-level), distutils.command.build_clib (top-level), distutils.command.build_ext (top-level), distutils.command.build_py (top-level), distutils.command.build_scripts (top-level), distutils.command.check (top-level), distutils.command.clean (top-level), distutils.command.config (top-level), distutils.command.install (top-level), distutils.command.install_data (top-level), distutils.command.install_egg_info (top-level), distutils.command.install_headers (top-level), distutils.command.install_lib (top-level), distutils.command.install_scripts (top-level), distutils.command.register (top-level), distutils.command.sdist (top-level), distutils.command.upload (top-level), setuptools.dist (top-level), setuptools._distutils.dist (delayed), setuptools._distutils.tests.test_build_ext (delayed), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_upload (top-level)
runtime module named distutils.unixccompiler - imported by setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level)
runtime module named distutils.compat - imported by distutils.compat.py38 (top-level), distutils.compat.py39 (top-level), setuptools._distutils.tests.test_unixccompiler (top-level)
missing module named path - imported by setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_text_file (top-level)
missing module named 'jaraco.path' - imported by setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_dist (top-level), setuptools._distutils.tests.test_file_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_text_file (top-level)
runtime module named distutils.text_file - imported by setuptools._distutils.extension (delayed), setuptools._distutils.sysconfig (delayed), setuptools._distutils.tests.test_text_file (top-level)
missing module named 'jaraco.envs' - imported by setuptools._distutils.tests.test_sysconfig (top-level)
missing module named 'test.support' - imported by setuptools._vendor.importlib_resources.tests.test_functional (optional), setuptools._distutils.tests.compat.py38 (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_sysconfig (top-level)
runtime module named distutils.ccompiler - imported by cffi._shimmed_dist_utils (optional), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_ccompiler (top-level), setuptools._distutils.tests.test_msvccompiler (delayed), setuptools._distutils.tests.test_sysconfig (top-level)
runtime module named distutils.spawn - imported by setuptools._distutils.cmd (delayed), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_spawn (top-level)
runtime module named distutils.filelist - imported by setuptools.monkey (top-level), setuptools.command.egg_info (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_sdist (top-level)
runtime module named distutils.command.sdist - imported by setuptools.command.sdist (top-level), setuptools._distutils.tests.test_sdist (top-level)
runtime module named distutils.archive_util - imported by setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_sdist (top-level)
missing module named docutils - imported by setuptools._distutils.tests.test_register (optional)
runtime module named distutils.command.register - imported by setuptools._distutils.tests.test_register (top-level)
runtime module named distutils._msvccompiler - imported by setuptools._distutils.tests.test_msvccompiler (top-level)
runtime module named distutils.msvc9compiler - imported by cffi._shimmed_dist_utils (conditional, optional), setuptools._distutils.msvccompiler (conditional), setuptools._distutils.tests.test_msvc9compiler (delayed)
runtime module named distutils.msvccompiler - imported by setuptools._distutils.tests.test_msvc9compiler (conditional)
runtime module named distutils._modified - imported by setuptools._distutils.file_util (delayed), setuptools._distutils.tests.test_modified (top-level)
runtime module named distutils.cygwinccompiler - imported by setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_mingwccompiler (delayed)
runtime module named distutils._log - imported by setuptools._distutils.command.bdist_dumb (top-level), setuptools._distutils.command.bdist_rpm (top-level), setuptools._distutils.command.build_clib (top-level), setuptools._distutils.command.build_ext (top-level), setuptools._distutils.command.build_py (top-level), setuptools._distutils.command.build_scripts (top-level), setuptools._distutils.command.clean (top-level), setuptools._distutils.command.config (top-level), setuptools._distutils.command.install (top-level), setuptools._distutils.command.install_scripts (top-level), setuptools._distutils.command.register (top-level), setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_log (top-level)
runtime module named distutils.command.install_scripts - imported by setuptools._distutils.tests.test_install_scripts (top-level)
runtime module named distutils.extension - imported by setuptools.extension (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_extension (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_lib (top-level)
runtime module named distutils.command.install_lib - imported by setuptools._distutils.tests.test_install_lib (top-level)
runtime module named distutils.command.install_headers - imported by setuptools._distutils.tests.test_install_headers (top-level)
runtime module named distutils.command.install_data - imported by setuptools._distutils.tests.test_install_data (top-level)
runtime module named distutils.command.install - imported by setuptools._distutils.tests.test_install (top-level)
missing module named usercustomize - imported by site (delayed, optional)
missing module named sitecustomize - imported by site (delayed, optional)
missing module named readline - imported by cmd (delayed, conditional, optional), code (delayed, conditional, optional), pdb (delayed, optional), pstats (conditional, optional), site (delayed, optional), rlcompleter (optional)
missing module named vms_lib - imported by platform (delayed, optional)
missing module named 'java.lang' - imported by platform (delayed, optional)
missing module named java - imported by platform (delayed)
missing module named _winreg - imported by platform (delayed, optional), selenium.webdriver.firefox.firefox_binary (delayed, optional), pygments.formatters.img (optional)
runtime module named distutils.debug - imported by setuptools.dist (top-level), setuptools._distutils.ccompiler (delayed), setuptools._distutils.cmd (delayed), setuptools._distutils.filelist (delayed), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_filelist (top-level)
runtime module named distutils.file_util - imported by setuptools._distutils.dir_util (delayed), setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_file_util (top-level)
runtime module named distutils.tests.test_dist - imported by setuptools._distutils.tests.test_dist (delayed)
runtime module named distutils.dist - imported by setuptools.dist (top-level), setuptools.config.setupcfg (conditional), setuptools.config._apply_pyprojecttoml (conditional), wheel.cli.convert (optional), setuptools._vendor.wheel.cli.convert (optional), setuptools._distutils.cmd (delayed), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_core (top-level), setuptools._distutils.tests.test_dist (top-level)
runtime module named distutils.cmd - imported by setuptools.dist (top-level), setuptools._distutils.dist (delayed), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_dist (top-level)
runtime module named distutils.dir_util - imported by setuptools.command.bdist_egg (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_dir_util (top-level)
runtime module named distutils.command.config - imported by setuptools._distutils.tests.test_config_cmd (top-level)
runtime module named distutils.command.clean - imported by setuptools._distutils.tests.test_clean (top-level)
missing module named pygments.lexers.PrologLexer - imported by pygments.lexers (top-level), pygments.lexers.cplint (top-level)
missing module named pygments.lexers.PythonLexer - imported by pygments.lexers (top-level), IPython.core.oinspect (top-level)
missing module named PIL - imported by matplotlib_inline.config (delayed, optional), pygments.formatters.img (optional)
missing module named ctags - imported by pygments.formatters.html (optional)
missing module named pygments.formatters.LatexFormatter - imported by pygments.formatters (delayed), IPython.lib.display (delayed)
missing module named pygments.formatters.HtmlFormatter - imported by pygments.formatters (delayed), IPython.lib.display (delayed), IPython.core.oinspect (top-level), stack_data.core (delayed)
missing module named chardet - imported by requests (optional), pygments.lexer (delayed, conditional, optional)
runtime module named distutils.command.check - imported by setuptools._distutils.tests.test_check (top-level)
runtime module named distutils.command.build_scripts - imported by setuptools._distutils.tests.test_build_scripts (top-level)
runtime module named distutils.command.build_py - imported by setuptools._distutils.tests.test_build_py (top-level)
missing module named xx - imported by setuptools._distutils.tests.test_build_ext (delayed)
runtime module named distutils.tests.support - imported by setuptools._distutils.tests.test_build_ext (top-level)
runtime module named distutils.command.build_clib - imported by setuptools._distutils.tests.test_build_clib (top-level)
runtime module named distutils.command.build - imported by setuptools.command.build (top-level), setuptools._distutils.tests.test_build (top-level)
runtime module named distutils.command.bdist_rpm - imported by setuptools._distutils.tests.test_bdist_rpm (top-level)
runtime module named distutils.command.bdist_dumb - imported by setuptools._distutils.tests.test_bdist_dumb (top-level)
runtime module named distutils.command.bdist - imported by setuptools.command (top-level), setuptools._distutils.tests.test_bdist (top-level)
runtime module named distutils.versionpredicate - imported by setuptools._distutils.dist (delayed)
runtime module named distutils.fancy_getopt - imported by setuptools.dist (top-level), setuptools._distutils.ccompiler (delayed), setuptools._distutils.cmd (delayed)
missing module named _manylinux - imported by packaging._manylinux (delayed, optional), setuptools._vendor.packaging._manylinux (delayed, optional), wheel.vendored.packaging._manylinux (delayed, optional), setuptools._vendor.wheel.vendored.packaging._manylinux (delayed, optional), setuptools._distutils._vendor.packaging._manylinux (delayed, optional)
missing module named typeshed - imported by typeguard._decorators (conditional)
missing module named 'typeshed.stdlib' - imported by setuptools._vendor.typeguard._decorators (conditional)
missing module named jnius - imported by platformdirs.android (delayed, conditional, optional), setuptools._vendor.platformdirs.android (delayed, conditional, optional)
missing module named android - imported by platformdirs.android (delayed, conditional, optional), setuptools._vendor.platformdirs.android (delayed, conditional, optional)
missing module named mod - imported by setuptools._vendor.importlib_resources.tests.test_files (delayed)
missing module named 'jaraco.test' - imported by setuptools._vendor.importlib_resources.tests.compat.py39 (top-level)
runtime module named distutils.command.build_ext - imported by cffi._shimmed_dist_utils (optional), setuptools (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_install (top-level)
missing module named _typeshed - imported by pkg_resources (conditional), trio._file_io (conditional), trio._path (conditional), prompt_toolkit.eventloop.inputhook (conditional)
missing module named trove_classifiers - imported by setuptools.config._validate_pyproject.formats (optional)
runtime module named distutils.log - imported by setuptools.logging (top-level), setuptools.discovery (top-level), setuptools.dist (top-level), setuptools.installer (top-level), setuptools.command.egg_info (top-level), setuptools.command.sdist (top-level), setuptools.command.setopt (top-level), setuptools.command.bdist_egg (top-level), setuptools.wheel (delayed), setuptools.command.bdist_wheel (top-level), cffi._shimmed_dist_utils (optional)
runtime module named distutils.errors - imported by setuptools (top-level), setuptools.msvc (top-level), setuptools.errors (top-level), setuptools.dist (top-level), setuptools.config.expand (top-level), setuptools.installer (top-level), setuptools.command.egg_info (top-level), setuptools.command.setopt (top-level), setuptools.extension (top-level), setuptools.archive_util (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_build_clib (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_check (top-level), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_file_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_lib (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_modified (top-level), setuptools._distutils.tests.test_msvc9compiler (top-level), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_upload (top-level), setuptools._distutils.tests.test_util (top-level)
runtime module named distutils.core - imported by setuptools (top-level), setuptools.dist (top-level), setuptools.extension (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.dist (delayed), setuptools._distutils.tests.support (top-level), setuptools._distutils.tests.test_bdist_dumb (top-level), setuptools._distutils.tests.test_bdist_rpm (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_core (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_scripts (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_upload (top-level)
missing module named pyimod02_importers - imported by C:\Users\xrilang\Desktop\ele_fengshen\venv\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed), C:\Users\xrilang\Desktop\ele_fengshen\venv\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py (delayed)
missing module named 'yapf.yapflib' - imported by IPython.terminal.interactiveshell (delayed)
missing module named yapf - imported by IPython.terminal.interactiveshell (delayed)
missing module named black - imported by IPython.terminal.interactiveshell (delayed)
missing module named prompt_toolkit.filters.vi_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.document (top-level), prompt_toolkit.key_binding.bindings.page_navigation (top-level), prompt_toolkit.widgets.toolbars (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named 'prompt_toolkit.key_binding.key_bindings.vi' - imported by prompt_toolkit.key_binding.vi_state (conditional)
missing module named 'backports.functools_lru_cache' - imported by wcwidth.wcwidth (optional)
missing module named prompt_toolkit.filters.is_done - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.menus (top-level), prompt_toolkit.widgets.base (top-level), prompt_toolkit.shortcuts.progress_bar.base (top-level), prompt_toolkit.shortcuts.prompt (top-level)
missing module named prompt_toolkit.filters.has_completions - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.menus (top-level), prompt_toolkit.widgets.toolbars (top-level), prompt_toolkit.widgets.dialogs (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named prompt_toolkit.filters.vi_insert_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.containers (top-level), prompt_toolkit.key_binding.bindings.basic (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named prompt_toolkit.filters.emacs_insert_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.containers (top-level), prompt_toolkit.key_binding.bindings.basic (top-level), prompt_toolkit.key_binding.bindings.emacs (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named prompt_toolkit.filters.is_searching - imported by prompt_toolkit.filters (top-level), prompt_toolkit.search (top-level), prompt_toolkit.key_binding.bindings.search (top-level), prompt_toolkit.key_binding.bindings.vi (top-level)
missing module named numpydoc - imported by jedi.inference.docstrings (delayed)
missing module named argcomplete - imported by traitlets.config.loader (delayed, optional), traitlets.config.argcomplete_config (optional)
missing module named traitlets.config.Application - imported by traitlets.config (delayed, conditional), traitlets.log (delayed, conditional)
missing module named sip - imported by IPython.external.qt_loaders (delayed, optional)
missing module named numpy - imported by IPython.lib.display (delayed), IPython.core.formatters (delayed, conditional), IPython.core.magics.namespace (delayed, conditional, optional)
missing module named 'matplotlib.figure' - imported by matplotlib_inline.backend_inline (top-level)
missing module named 'matplotlib._pylab_helpers' - imported by matplotlib_inline.backend_inline (top-level)
missing module named 'matplotlib.backends' - imported by matplotlib_inline.backend_inline (top-level)
missing module named matplotlib - imported by matplotlib_inline.backend_inline (top-level)
missing module named rpds.HashTrieMap - imported by rpds (top-level), referencing._core (top-level), jsonschema._types (top-level), jsonschema.validators (top-level)
missing module named rpds.List - imported by rpds (top-level), referencing._core (top-level)
missing module named rpds.HashTrieSet - imported by rpds (top-level), referencing._core (top-level)
missing module named simplejson - imported by requests.compat (conditional, optional)
missing module named dummy_threading - imported by requests.cookies (optional)
missing module named zstandard - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named brotli - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named brotlicffi - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named win_inet_pton - imported by socks (conditional, optional)
missing module named cryptography - imported by urllib3.contrib.pyopenssl (top-level), requests (conditional, optional)
missing module named 'OpenSSL.crypto' - imported by urllib3.contrib.pyopenssl (delayed, conditional), eventlet.green.OpenSSL.crypto (top-level)
missing module named 'cryptography.x509' - imported by urllib3.contrib.pyopenssl (delayed, optional)
missing module named OpenSSL - imported by urllib3.contrib.pyopenssl (top-level), eventlet.greenio.base (optional), eventlet.green.OpenSSL.SSL (top-level), trio._dtls (delayed, conditional)
missing module named pyodide - imported by urllib3.contrib.emscripten.fetch (top-level)
missing module named js - imported by urllib3.contrib.emscripten.fetch (top-level)
missing module named isoduration - imported by jsonschema._format (top-level)
missing module named uri_template - imported by jsonschema._format (top-level)
missing module named jsonpointer - imported by jsonschema._format (top-level)
missing module named webcolors - imported by jsonschema._format (top-level)
missing module named rfc3339_validator - imported by jsonschema._format (top-level)
missing module named rfc3986_validator - imported by jsonschema._format (optional)
missing module named rfc3987 - imported by jsonschema._format (optional)
missing module named fqdn - imported by jsonschema._format (top-level)
missing module named prompt_toolkit.filters.vi_insert_multiple_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.processors (top-level)
missing module named docrepr - imported by IPython.core.interactiveshell (optional)
missing module named cPickle - imported by pickleshare (optional), pycparser.ply.yacc (delayed, optional)
missing module named pathlib2 - imported by pickleshare (optional)
missing module named imp - imported by eventlet.patcher (optional), eventlet.tpool (optional), cffi.verifier (conditional), cffi._imp_emulation (optional)
missing module named _dummy_thread - imported by cffi.lock (conditional, optional), sortedcontainers.sortedlist (conditional, optional)
missing module named dummy_thread - imported by cffi.lock (conditional, optional), sortedcontainers.sortedlist (conditional, optional)
missing module named thread - imported by cffi.lock (conditional, optional), cffi.cparser (conditional, optional), sortedcontainers.sortedlist (conditional, optional)
missing module named cStringIO - imported by cffi.ffiplatform (optional)
missing module named cffi._pycparser - imported by cffi (optional), cffi.cparser (optional)
missing module named 'curio.meta' - imported by sniffio._impl (delayed, conditional)
missing module named exceptiongroup - imported by trio._core._run (conditional), trio._highlevel_open_tcp_listeners (conditional), trio._highlevel_open_tcp_stream (conditional), trio.testing._check_streams (conditional), trio.testing._raises_group (conditional)
missing module named _pytest - imported by trio.testing._raises_group (conditional)
missing module named hypothesis - imported by trio._core._run (delayed)
missing module named tputil - imported by trio._core._concat_tb (optional)
missing module named curio - imported by IPython.core.async_helpers (delayed)
missing module named 'astroid.node_classes' - imported by asttokens.astroid_compat (optional)
missing module named 'astroid.nodes' - imported by asttokens.astroid_compat (optional)
missing module named astroid - imported by asttokens.astroid_compat (optional)
missing module named six.moves.xrange - imported by six.moves (top-level), asttokens.asttokens (top-level)
runtime module named six.moves - imported by asttokens.asttokens (top-level)
missing module named StringIO - imported by six (conditional)
missing module named _curses - imported by curses (top-level), curses.has_key (top-level)
missing module named 'ipykernel.kernelapp' - imported by IPython (delayed)
missing module named ipykernel - imported by IPython (delayed)
missing module named pexpect - imported by IPython.utils._process_posix (top-level)
missing module named System - imported by IPython.utils._process_cli (top-level)
missing module named clr - imported by IPython.utils._process_cli (top-level)
missing module named wsaccel - imported by websocket._utils (optional)
missing module named 'python_socks.sync' - imported by websocket._http (optional)
missing module named 'python_socks._types' - imported by websocket._http (optional)
missing module named python_socks - imported by websocket._http (optional)
missing module named 'wsaccel.xormask' - imported by websocket._abnf (optional)
missing module named aiohttp - imported by engineio.async_client (optional)
missing module named aio_pika - imported by socketio.async_aiopika_manager (optional)
missing module named 'aioredis.exceptions' - imported by socketio.async_redis_manager (optional)
missing module named aioredis - imported by socketio.async_redis_manager (optional)
missing module named 'redis.exceptions' - imported by socketio.async_redis_manager (optional)
missing module named redis - imported by socketio.redis_manager (optional), socketio.async_redis_manager (optional)
missing module named monotonic - imported by eventlet.hubs.hub (optional), eventlet (optional)
missing module named itimer - imported by eventlet.hubs.hub (conditional, optional)
missing module named psycopg2 - imported by eventlet.support.psycopg2_patcher (top-level)
missing module named 'OpenSSL.SSL' - imported by eventlet.green.OpenSSL.SSL (top-level)
missing module named 'OpenSSL.version' - imported by eventlet.green.OpenSSL.version (top-level)
missing module named 'OpenSSL.tsafe' - imported by eventlet.green.OpenSSL.tsafe (top-level)
missing module named kafka - imported by socketio.kafka_manager (optional)
missing module named 'gevent.monkey' - imported by socketio.redis_manager (delayed, conditional)
missing module named gevent - imported by socketio.kombu_manager (delayed, conditional)
missing module named kombu - imported by socketio.kombu_manager (optional)
missing module named msgpack - imported by socketio.msgpack_packet (top-level)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5953
build/客户端/EXE-00.toc Normal file

File diff suppressed because it is too large Load Diff

5931
build/客户端/PKG-00.toc Normal file

File diff suppressed because it is too large Load Diff

BIN
build/客户端/PYZ-00.pyz Normal file

Binary file not shown.

5485
build/客户端/PYZ-00.toc Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,211 @@
This file lists modules PyInstaller was not able to find. This does not
necessarily mean this module is required for running your program. Python and
Python 3rd-party packages include a lot of conditional or optional modules. For
example the module 'ntpath' only exists on Windows, whereas the module
'posixpath' only exists on Posix systems.
Types if import:
* top-level: imported at the top-level - look at these first
* conditional: imported within an if-statement
* delayed: imported within a function
* optional: imported within a try-except-statement
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
tracking down the missing module yourself. Thanks!
missing module named _sha512 - imported by random (optional)
missing module named pwd - imported by posixpath (delayed, conditional, optional), shutil (delayed, optional), tarfile (optional), pathlib (delayed, optional), subprocess (delayed, conditional, optional), netrc (delayed, conditional), getpass (delayed), http.server (delayed, optional), backports.tarfile (optional), setuptools._vendor.backports.tarfile (optional), setuptools._distutils.util (delayed, conditional, optional), setuptools._distutils.archive_util (optional), setuptools._distutils.tests.unix_compat (optional), setuptools._distutils.tests.test_util (delayed)
missing module named grp - imported by shutil (delayed, optional), tarfile (optional), pathlib (delayed, optional), subprocess (delayed, conditional, optional), backports.tarfile (optional), setuptools._vendor.backports.tarfile (optional), setuptools._distutils.archive_util (optional), setuptools._distutils.tests.unix_compat (optional)
missing module named posix - imported by os (conditional, optional), posixpath (optional), shutil (conditional), importlib._bootstrap_external (conditional)
missing module named resource - imported by posix (top-level), IPython.utils.timing (optional)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
runtime module named distutils.sysconfig - imported by cffi._shimmed_dist_utils (optional), setuptools._distutils.util (delayed, conditional), setuptools._distutils.extension (delayed), setuptools._distutils.command.build_ext (delayed), setuptools._distutils.command.build_scripts (top-level), setuptools._distutils.cygwinccompiler (delayed), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_util (top-level)
runtime module named distutils - imported by distutils._collections (top-level), distutils._functools (top-level), distutils._itertools (top-level), distutils._log (top-level), distutils._macos_compat (top-level), distutils._modified (top-level), distutils._msvccompiler (top-level), distutils._vendor (top-level), distutils.archive_util (top-level), distutils.bcppcompiler (top-level), distutils.ccompiler (top-level), distutils.cmd (top-level), distutils.command (top-level), distutils.compat (top-level), distutils.config (top-level), distutils.core (top-level), distutils.cygwinccompiler (top-level), distutils.debug (top-level), distutils.dep_util (top-level), distutils.dir_util (top-level), distutils.dist (top-level), distutils.errors (top-level), distutils.extension (top-level), distutils.fancy_getopt (top-level), distutils.file_util (top-level), distutils.filelist (top-level), distutils.log (top-level), distutils.msvc9compiler (top-level), distutils.msvccompiler (top-level), distutils.spawn (top-level), distutils.sysconfig (top-level), distutils.tests (top-level), distutils.text_file (top-level), distutils.unixccompiler (top-level), distutils.util (top-level), distutils.version (top-level), distutils.versionpredicate (top-level), distutils.zosccompiler (top-level), setuptools.discovery (top-level), setuptools.errors (top-level), setuptools.installer (top-level), setuptools.command.egg_info (top-level), setuptools.command.sdist (top-level), setuptools.command.setopt (top-level), setuptools.command.bdist_egg (top-level), setuptools.wheel (delayed), setuptools.command.bdist_wheel (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.util (delayed, conditional), setuptools._distutils.command.build_ext (delayed), setuptools._distutils.command.build_scripts (top-level), setuptools._distutils.command.sdist (top-level), setuptools._distutils.cygwinccompiler (delayed), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_ccompiler (top-level), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_msvc9compiler (delayed), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_util (top-level), setuptools._distutils.tests.test_version (top-level)
missing module named _posixsubprocess - imported by subprocess (conditional), multiprocessing.util (delayed)
missing module named fcntl - imported by subprocess (optional), eventlet.greenio.base (delayed, optional)
runtime module named distutils.util - imported by setuptools._core_metadata (top-level), setuptools.discovery (top-level), setuptools.dist (top-level), setuptools.wheel (top-level), setuptools.command.egg_info (top-level), setuptools.command.setopt (top-level), setuptools._distutils.extension (delayed), setuptools._distutils.unixccompiler (delayed, conditional), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_util (top-level)
missing module named pytest - imported by trio.testing._raises_group (conditional, optional), setuptools._vendor.typeguard._pytest_plugin (conditional), setuptools._distutils.tests.support (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.unix_compat (top-level), setuptools._distutils.tests.test_bdist_dumb (top-level), setuptools._distutils.tests.test_bdist_rpm (top-level), setuptools._distutils.tests.test_build_clib (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_ccompiler (top-level), setuptools._distutils.tests.test_check (top-level), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_config (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_core (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_dist (top-level), setuptools._distutils.tests.test_extension (top-level), setuptools._distutils.tests.test_file_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_data (top-level), setuptools._distutils.tests.test_install_headers (top-level), setuptools._distutils.tests.test_install_lib (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_modified (top-level), setuptools._distutils.tests.test_msvc9compiler (top-level), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_upload (top-level), setuptools._distutils.tests.test_util (top-level), setuptools._distutils.tests.test_version (top-level)
runtime module named distutils.version - imported by setuptools._distutils.tests.test_version (top-level)
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named _scproxy - imported by urllib.request (conditional)
missing module named termios - imported by getpass (optional), tty (top-level), IPython.core.page (delayed, optional), prompt_toolkit.input.vt100 (top-level)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
runtime module named distutils.tests.test_config - imported by setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_upload (top-level)
runtime module named distutils.tests - imported by distutils.tests.compat (top-level), distutils.tests.support (top-level), distutils.tests.test_archive_util (top-level), distutils.tests.test_bdist (top-level), distutils.tests.test_bdist_dumb (top-level), distutils.tests.test_bdist_rpm (top-level), distutils.tests.test_build (top-level), distutils.tests.test_build_clib (top-level), distutils.tests.test_build_ext (top-level), distutils.tests.test_build_py (top-level), distutils.tests.test_build_scripts (top-level), distutils.tests.test_ccompiler (top-level), distutils.tests.test_check (top-level), distutils.tests.test_clean (top-level), distutils.tests.test_cmd (top-level), distutils.tests.test_config (top-level), distutils.tests.test_config_cmd (top-level), distutils.tests.test_core (top-level), distutils.tests.test_cygwinccompiler (top-level), distutils.tests.test_dir_util (top-level), distutils.tests.test_dist (top-level), distutils.tests.test_extension (top-level), distutils.tests.test_file_util (top-level), distutils.tests.test_filelist (top-level), distutils.tests.test_install (top-level), distutils.tests.test_install_data (top-level), distutils.tests.test_install_headers (top-level), distutils.tests.test_install_lib (top-level), distutils.tests.test_install_scripts (top-level), distutils.tests.test_log (top-level), distutils.tests.test_mingwccompiler (top-level), distutils.tests.test_modified (top-level), distutils.tests.test_msvc9compiler (top-level), distutils.tests.test_msvccompiler (top-level), distutils.tests.test_register (top-level), distutils.tests.test_sdist (top-level), distutils.tests.test_spawn (top-level), distutils.tests.test_sysconfig (top-level), distutils.tests.test_text_file (top-level), distutils.tests.test_unixccompiler (top-level), distutils.tests.test_upload (top-level), distutils.tests.test_util (top-level), distutils.tests.test_version (top-level), distutils.tests.test_versionpredicate (top-level), distutils.tests.unix_compat (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_bdist (top-level), setuptools._distutils.tests.test_bdist_dumb (top-level), setuptools._distutils.tests.test_bdist_rpm (top-level), setuptools._distutils.tests.test_build (top-level), setuptools._distutils.tests.test_build_clib (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_check (top-level), setuptools._distutils.tests.test_clean (top-level), setuptools._distutils.tests.test_config (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_dist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_data (top-level), setuptools._distutils.tests.test_install_headers (top-level), setuptools._distutils.tests.test_install_lib (top-level), setuptools._distutils.tests.test_install_scripts (top-level), setuptools._distutils.tests.test_modified (top-level), setuptools._distutils.tests.test_msvc9compiler (top-level), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_text_file (top-level)
runtime module named distutils.command.upload - imported by setuptools._distutils.tests.test_upload (top-level)
runtime module named distutils.command - imported by distutils.command._framework_compat (top-level), distutils.command.bdist (top-level), distutils.command.bdist_dumb (top-level), distutils.command.bdist_rpm (top-level), distutils.command.build (top-level), distutils.command.build_clib (top-level), distutils.command.build_ext (top-level), distutils.command.build_py (top-level), distutils.command.build_scripts (top-level), distutils.command.check (top-level), distutils.command.clean (top-level), distutils.command.config (top-level), distutils.command.install (top-level), distutils.command.install_data (top-level), distutils.command.install_egg_info (top-level), distutils.command.install_headers (top-level), distutils.command.install_lib (top-level), distutils.command.install_scripts (top-level), distutils.command.register (top-level), distutils.command.sdist (top-level), distutils.command.upload (top-level), setuptools.dist (top-level), setuptools._distutils.dist (delayed), setuptools._distutils.tests.test_build_ext (delayed), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_upload (top-level)
runtime module named distutils.unixccompiler - imported by setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level)
runtime module named distutils.compat - imported by distutils.compat.py38 (top-level), distutils.compat.py39 (top-level), setuptools._distutils.tests.test_unixccompiler (top-level)
missing module named path - imported by setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_text_file (top-level)
missing module named 'jaraco.path' - imported by setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_dist (top-level), setuptools._distutils.tests.test_file_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_text_file (top-level)
runtime module named distutils.text_file - imported by setuptools._distutils.extension (delayed), setuptools._distutils.sysconfig (delayed), setuptools._distutils.tests.test_text_file (top-level)
missing module named 'jaraco.envs' - imported by setuptools._distutils.tests.test_sysconfig (top-level)
missing module named 'test.support' - imported by setuptools._vendor.importlib_resources.tests.test_functional (optional), setuptools._distutils.tests.compat.py38 (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_sysconfig (top-level)
runtime module named distutils.ccompiler - imported by cffi._shimmed_dist_utils (optional), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_ccompiler (top-level), setuptools._distutils.tests.test_msvccompiler (delayed), setuptools._distutils.tests.test_sysconfig (top-level)
runtime module named distutils.spawn - imported by setuptools._distutils.cmd (delayed), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_spawn (top-level)
runtime module named distutils.filelist - imported by setuptools.monkey (top-level), setuptools.command.egg_info (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_sdist (top-level)
runtime module named distutils.command.sdist - imported by setuptools.command.sdist (top-level), setuptools._distutils.tests.test_sdist (top-level)
runtime module named distutils.archive_util - imported by setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_sdist (top-level)
missing module named docutils - imported by setuptools._distutils.tests.test_register (optional)
runtime module named distutils.command.register - imported by setuptools._distutils.tests.test_register (top-level)
runtime module named distutils._msvccompiler - imported by setuptools._distutils.tests.test_msvccompiler (top-level)
runtime module named distutils.msvc9compiler - imported by cffi._shimmed_dist_utils (conditional, optional), setuptools._distutils.msvccompiler (conditional), setuptools._distutils.tests.test_msvc9compiler (delayed)
runtime module named distutils.msvccompiler - imported by setuptools._distutils.tests.test_msvc9compiler (conditional)
runtime module named distutils._modified - imported by setuptools._distutils.file_util (delayed), setuptools._distutils.tests.test_modified (top-level)
runtime module named distutils.cygwinccompiler - imported by setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_mingwccompiler (delayed)
runtime module named distutils._log - imported by setuptools._distutils.command.bdist_dumb (top-level), setuptools._distutils.command.bdist_rpm (top-level), setuptools._distutils.command.build_clib (top-level), setuptools._distutils.command.build_ext (top-level), setuptools._distutils.command.build_py (top-level), setuptools._distutils.command.build_scripts (top-level), setuptools._distutils.command.clean (top-level), setuptools._distutils.command.config (top-level), setuptools._distutils.command.install (top-level), setuptools._distutils.command.install_scripts (top-level), setuptools._distutils.command.register (top-level), setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_log (top-level)
runtime module named distutils.command.install_scripts - imported by setuptools._distutils.tests.test_install_scripts (top-level)
runtime module named distutils.extension - imported by setuptools.extension (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_extension (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_lib (top-level)
runtime module named distutils.command.install_lib - imported by setuptools._distutils.tests.test_install_lib (top-level)
runtime module named distutils.command.install_headers - imported by setuptools._distutils.tests.test_install_headers (top-level)
runtime module named distutils.command.install_data - imported by setuptools._distutils.tests.test_install_data (top-level)
runtime module named distutils.command.install - imported by setuptools._distutils.tests.test_install (top-level)
missing module named usercustomize - imported by site (delayed, optional)
missing module named sitecustomize - imported by site (delayed, optional)
missing module named readline - imported by cmd (delayed, conditional, optional), code (delayed, conditional, optional), pdb (delayed, optional), pstats (conditional, optional), site (delayed, optional), rlcompleter (optional)
missing module named vms_lib - imported by platform (delayed, optional)
missing module named 'java.lang' - imported by platform (delayed, optional)
missing module named java - imported by platform (delayed)
missing module named _winreg - imported by platform (delayed, optional), selenium.webdriver.firefox.firefox_binary (delayed, optional), pygments.formatters.img (optional)
runtime module named distutils.debug - imported by setuptools.dist (top-level), setuptools._distutils.ccompiler (delayed), setuptools._distutils.cmd (delayed), setuptools._distutils.filelist (delayed), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_filelist (top-level)
runtime module named distutils.file_util - imported by setuptools._distutils.dir_util (delayed), setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_file_util (top-level)
runtime module named distutils.tests.test_dist - imported by setuptools._distutils.tests.test_dist (delayed)
runtime module named distutils.dist - imported by setuptools.dist (top-level), setuptools.config.setupcfg (conditional), setuptools.config._apply_pyprojecttoml (conditional), wheel.cli.convert (optional), setuptools._vendor.wheel.cli.convert (optional), setuptools._distutils.cmd (delayed), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_core (top-level), setuptools._distutils.tests.test_dist (top-level)
runtime module named distutils.cmd - imported by setuptools.dist (top-level), setuptools._distutils.dist (delayed), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_dist (top-level)
runtime module named distutils.dir_util - imported by setuptools.command.bdist_egg (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_dir_util (top-level)
runtime module named distutils.command.config - imported by setuptools._distutils.tests.test_config_cmd (top-level)
runtime module named distutils.command.clean - imported by setuptools._distutils.tests.test_clean (top-level)
missing module named pygments.lexers.PrologLexer - imported by pygments.lexers (top-level), pygments.lexers.cplint (top-level)
missing module named pygments.lexers.PythonLexer - imported by pygments.lexers (top-level), IPython.core.oinspect (top-level)
missing module named PIL - imported by matplotlib_inline.config (delayed, optional), pygments.formatters.img (optional)
missing module named ctags - imported by pygments.formatters.html (optional)
missing module named pygments.formatters.LatexFormatter - imported by pygments.formatters (delayed), IPython.lib.display (delayed)
missing module named pygments.formatters.HtmlFormatter - imported by pygments.formatters (delayed), IPython.lib.display (delayed), IPython.core.oinspect (top-level), stack_data.core (delayed)
missing module named chardet - imported by requests (optional), pygments.lexer (delayed, conditional, optional)
runtime module named distutils.command.check - imported by setuptools._distutils.tests.test_check (top-level)
runtime module named distutils.command.build_scripts - imported by setuptools._distutils.tests.test_build_scripts (top-level)
runtime module named distutils.command.build_py - imported by setuptools._distutils.tests.test_build_py (top-level)
missing module named xx - imported by setuptools._distutils.tests.test_build_ext (delayed)
runtime module named distutils.tests.support - imported by setuptools._distutils.tests.test_build_ext (top-level)
runtime module named distutils.command.build_clib - imported by setuptools._distutils.tests.test_build_clib (top-level)
runtime module named distutils.command.build - imported by setuptools.command.build (top-level), setuptools._distutils.tests.test_build (top-level)
runtime module named distutils.command.bdist_rpm - imported by setuptools._distutils.tests.test_bdist_rpm (top-level)
runtime module named distutils.command.bdist_dumb - imported by setuptools._distutils.tests.test_bdist_dumb (top-level)
runtime module named distutils.command.bdist - imported by setuptools.command (top-level), setuptools._distutils.tests.test_bdist (top-level)
runtime module named distutils.versionpredicate - imported by setuptools._distutils.dist (delayed)
runtime module named distutils.fancy_getopt - imported by setuptools.dist (top-level), setuptools._distutils.ccompiler (delayed), setuptools._distutils.cmd (delayed)
missing module named _manylinux - imported by packaging._manylinux (delayed, optional), setuptools._vendor.packaging._manylinux (delayed, optional), wheel.vendored.packaging._manylinux (delayed, optional), setuptools._vendor.wheel.vendored.packaging._manylinux (delayed, optional), setuptools._distutils._vendor.packaging._manylinux (delayed, optional)
missing module named typeshed - imported by typeguard._decorators (conditional)
missing module named 'typeshed.stdlib' - imported by setuptools._vendor.typeguard._decorators (conditional)
missing module named jnius - imported by platformdirs.android (delayed, conditional, optional), setuptools._vendor.platformdirs.android (delayed, conditional, optional)
missing module named android - imported by platformdirs.android (delayed, conditional, optional), setuptools._vendor.platformdirs.android (delayed, conditional, optional)
missing module named mod - imported by setuptools._vendor.importlib_resources.tests.test_files (delayed)
missing module named 'jaraco.test' - imported by setuptools._vendor.importlib_resources.tests.compat.py39 (top-level)
runtime module named distutils.command.build_ext - imported by cffi._shimmed_dist_utils (optional), setuptools (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_install (top-level)
missing module named _typeshed - imported by pkg_resources (conditional), trio._file_io (conditional), trio._path (conditional), prompt_toolkit.eventloop.inputhook (conditional)
missing module named trove_classifiers - imported by setuptools.config._validate_pyproject.formats (optional)
runtime module named distutils.log - imported by setuptools.logging (top-level), setuptools.discovery (top-level), setuptools.dist (top-level), setuptools.installer (top-level), setuptools.command.egg_info (top-level), setuptools.command.sdist (top-level), setuptools.command.setopt (top-level), setuptools.command.bdist_egg (top-level), setuptools.wheel (delayed), setuptools.command.bdist_wheel (top-level), cffi._shimmed_dist_utils (optional)
runtime module named distutils.errors - imported by setuptools (top-level), setuptools.msvc (top-level), setuptools.errors (top-level), setuptools.dist (top-level), setuptools.config.expand (top-level), setuptools.installer (top-level), setuptools.command.egg_info (top-level), setuptools.command.setopt (top-level), setuptools.extension (top-level), setuptools.archive_util (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_build_clib (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_check (top-level), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_file_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_lib (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_modified (top-level), setuptools._distutils.tests.test_msvc9compiler (top-level), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_upload (top-level), setuptools._distutils.tests.test_util (top-level)
runtime module named distutils.core - imported by setuptools (top-level), setuptools.dist (top-level), setuptools.extension (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.dist (delayed), setuptools._distutils.tests.support (top-level), setuptools._distutils.tests.test_bdist_dumb (top-level), setuptools._distutils.tests.test_bdist_rpm (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_core (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_scripts (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_upload (top-level)
missing module named pyimod02_importers - imported by C:\Users\xrilang\Desktop\ele_fengshen\venv\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed), C:\Users\xrilang\Desktop\ele_fengshen\venv\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py (delayed)
missing module named 'yapf.yapflib' - imported by IPython.terminal.interactiveshell (delayed)
missing module named yapf - imported by IPython.terminal.interactiveshell (delayed)
missing module named black - imported by IPython.terminal.interactiveshell (delayed)
missing module named prompt_toolkit.filters.vi_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.document (top-level), prompt_toolkit.key_binding.bindings.page_navigation (top-level), prompt_toolkit.widgets.toolbars (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named 'prompt_toolkit.key_binding.key_bindings.vi' - imported by prompt_toolkit.key_binding.vi_state (conditional)
missing module named 'backports.functools_lru_cache' - imported by wcwidth.wcwidth (optional)
missing module named prompt_toolkit.filters.is_done - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.menus (top-level), prompt_toolkit.widgets.base (top-level), prompt_toolkit.shortcuts.progress_bar.base (top-level), prompt_toolkit.shortcuts.prompt (top-level)
missing module named prompt_toolkit.filters.has_completions - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.menus (top-level), prompt_toolkit.widgets.toolbars (top-level), prompt_toolkit.widgets.dialogs (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named prompt_toolkit.filters.vi_insert_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.containers (top-level), prompt_toolkit.key_binding.bindings.basic (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named prompt_toolkit.filters.emacs_insert_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.containers (top-level), prompt_toolkit.key_binding.bindings.basic (top-level), prompt_toolkit.key_binding.bindings.emacs (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named prompt_toolkit.filters.is_searching - imported by prompt_toolkit.filters (top-level), prompt_toolkit.search (top-level), prompt_toolkit.key_binding.bindings.search (top-level), prompt_toolkit.key_binding.bindings.vi (top-level)
missing module named numpydoc - imported by jedi.inference.docstrings (delayed)
missing module named argcomplete - imported by traitlets.config.loader (delayed, optional), traitlets.config.argcomplete_config (optional)
missing module named traitlets.config.Application - imported by traitlets.config (delayed, conditional), traitlets.log (delayed, conditional)
missing module named sip - imported by IPython.external.qt_loaders (delayed, optional)
missing module named numpy - imported by IPython.lib.display (delayed), IPython.core.formatters (delayed, conditional), IPython.core.magics.namespace (delayed, conditional, optional)
missing module named 'matplotlib.figure' - imported by matplotlib_inline.backend_inline (top-level)
missing module named 'matplotlib._pylab_helpers' - imported by matplotlib_inline.backend_inline (top-level)
missing module named 'matplotlib.backends' - imported by matplotlib_inline.backend_inline (top-level)
missing module named matplotlib - imported by matplotlib_inline.backend_inline (top-level)
missing module named rpds.HashTrieMap - imported by rpds (top-level), referencing._core (top-level), jsonschema._types (top-level), jsonschema.validators (top-level)
missing module named rpds.List - imported by rpds (top-level), referencing._core (top-level)
missing module named rpds.HashTrieSet - imported by rpds (top-level), referencing._core (top-level)
missing module named simplejson - imported by requests.compat (conditional, optional)
missing module named dummy_threading - imported by requests.cookies (optional)
missing module named zstandard - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named brotli - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named brotlicffi - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named win_inet_pton - imported by socks (conditional, optional)
missing module named cryptography - imported by urllib3.contrib.pyopenssl (top-level), requests (conditional, optional)
missing module named 'OpenSSL.crypto' - imported by urllib3.contrib.pyopenssl (delayed, conditional), eventlet.green.OpenSSL.crypto (top-level)
missing module named 'cryptography.x509' - imported by urllib3.contrib.pyopenssl (delayed, optional)
missing module named OpenSSL - imported by urllib3.contrib.pyopenssl (top-level), eventlet.greenio.base (optional), eventlet.green.OpenSSL.SSL (top-level), trio._dtls (delayed, conditional)
missing module named pyodide - imported by urllib3.contrib.emscripten.fetch (top-level)
missing module named js - imported by urllib3.contrib.emscripten.fetch (top-level)
missing module named isoduration - imported by jsonschema._format (top-level)
missing module named uri_template - imported by jsonschema._format (top-level)
missing module named jsonpointer - imported by jsonschema._format (top-level)
missing module named webcolors - imported by jsonschema._format (top-level)
missing module named rfc3339_validator - imported by jsonschema._format (top-level)
missing module named rfc3986_validator - imported by jsonschema._format (optional)
missing module named rfc3987 - imported by jsonschema._format (optional)
missing module named fqdn - imported by jsonschema._format (top-level)
missing module named prompt_toolkit.filters.vi_insert_multiple_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.processors (top-level)
missing module named docrepr - imported by IPython.core.interactiveshell (optional)
missing module named cPickle - imported by pickleshare (optional), pycparser.ply.yacc (delayed, optional)
missing module named pathlib2 - imported by pickleshare (optional)
missing module named imp - imported by eventlet.patcher (optional), eventlet.tpool (optional), cffi.verifier (conditional), cffi._imp_emulation (optional)
missing module named _dummy_thread - imported by cffi.lock (conditional, optional), sortedcontainers.sortedlist (conditional, optional)
missing module named dummy_thread - imported by cffi.lock (conditional, optional), sortedcontainers.sortedlist (conditional, optional)
missing module named thread - imported by cffi.lock (conditional, optional), cffi.cparser (conditional, optional), sortedcontainers.sortedlist (conditional, optional)
missing module named cStringIO - imported by cffi.ffiplatform (optional)
missing module named cffi._pycparser - imported by cffi (optional), cffi.cparser (optional)
missing module named 'curio.meta' - imported by sniffio._impl (delayed, conditional)
missing module named exceptiongroup - imported by trio._core._run (conditional), trio._highlevel_open_tcp_listeners (conditional), trio._highlevel_open_tcp_stream (conditional), trio.testing._check_streams (conditional), trio.testing._raises_group (conditional)
missing module named _pytest - imported by trio.testing._raises_group (conditional)
missing module named hypothesis - imported by trio._core._run (delayed)
missing module named tputil - imported by trio._core._concat_tb (optional)
missing module named curio - imported by IPython.core.async_helpers (delayed)
missing module named 'astroid.node_classes' - imported by asttokens.astroid_compat (optional)
missing module named 'astroid.nodes' - imported by asttokens.astroid_compat (optional)
missing module named astroid - imported by asttokens.astroid_compat (optional)
missing module named six.moves.xrange - imported by six.moves (top-level), asttokens.asttokens (top-level)
runtime module named six.moves - imported by asttokens.asttokens (top-level)
missing module named StringIO - imported by six (conditional)
missing module named _curses - imported by curses (top-level), curses.has_key (top-level)
missing module named 'ipykernel.kernelapp' - imported by IPython (delayed)
missing module named ipykernel - imported by IPython (delayed)
missing module named pexpect - imported by IPython.utils._process_posix (top-level)
missing module named System - imported by IPython.utils._process_cli (top-level)
missing module named clr - imported by IPython.utils._process_cli (top-level)
missing module named wsaccel - imported by websocket._utils (optional)
missing module named 'python_socks.sync' - imported by websocket._http (optional)
missing module named 'python_socks._types' - imported by websocket._http (optional)
missing module named python_socks - imported by websocket._http (optional)
missing module named 'wsaccel.xormask' - imported by websocket._abnf (optional)
missing module named aiohttp - imported by engineio.async_client (optional)
missing module named aio_pika - imported by socketio.async_aiopika_manager (optional)
missing module named 'aioredis.exceptions' - imported by socketio.async_redis_manager (optional)
missing module named aioredis - imported by socketio.async_redis_manager (optional)
missing module named 'redis.exceptions' - imported by socketio.async_redis_manager (optional)
missing module named redis - imported by socketio.redis_manager (optional), socketio.async_redis_manager (optional)
missing module named monotonic - imported by eventlet.hubs.hub (optional), eventlet (optional)
missing module named itimer - imported by eventlet.hubs.hub (conditional, optional)
missing module named psycopg2 - imported by eventlet.support.psycopg2_patcher (top-level)
missing module named 'OpenSSL.SSL' - imported by eventlet.green.OpenSSL.SSL (top-level)
missing module named 'OpenSSL.version' - imported by eventlet.green.OpenSSL.version (top-level)
missing module named 'OpenSSL.tsafe' - imported by eventlet.green.OpenSSL.tsafe (top-level)
missing module named kafka - imported by socketio.kafka_manager (optional)
missing module named 'gevent.monkey' - imported by socketio.redis_manager (delayed, conditional)
missing module named gevent - imported by socketio.kombu_manager (delayed, conditional)
missing module named kombu - imported by socketio.kombu_manager (optional)
missing module named msgpack - imported by socketio.msgpack_packet (top-level)

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

5953
build/服务端/EXE-00.toc Normal file

File diff suppressed because it is too large Load Diff

5931
build/服务端/PKG-00.toc Normal file

File diff suppressed because it is too large Load Diff

BIN
build/服务端/PYZ-00.pyz Normal file

Binary file not shown.

5485
build/服务端/PYZ-00.toc Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,211 @@
This file lists modules PyInstaller was not able to find. This does not
necessarily mean this module is required for running your program. Python and
Python 3rd-party packages include a lot of conditional or optional modules. For
example the module 'ntpath' only exists on Windows, whereas the module
'posixpath' only exists on Posix systems.
Types if import:
* top-level: imported at the top-level - look at these first
* conditional: imported within an if-statement
* delayed: imported within a function
* optional: imported within a try-except-statement
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
tracking down the missing module yourself. Thanks!
missing module named _sha512 - imported by random (optional)
missing module named pwd - imported by posixpath (delayed, conditional, optional), shutil (delayed, optional), tarfile (optional), pathlib (delayed, optional), subprocess (delayed, conditional, optional), netrc (delayed, conditional), getpass (delayed), http.server (delayed, optional), backports.tarfile (optional), setuptools._vendor.backports.tarfile (optional), setuptools._distutils.util (delayed, conditional, optional), setuptools._distutils.archive_util (optional), setuptools._distutils.tests.unix_compat (optional), setuptools._distutils.tests.test_util (delayed)
missing module named grp - imported by shutil (delayed, optional), tarfile (optional), pathlib (delayed, optional), subprocess (delayed, conditional, optional), backports.tarfile (optional), setuptools._vendor.backports.tarfile (optional), setuptools._distutils.archive_util (optional), setuptools._distutils.tests.unix_compat (optional)
missing module named posix - imported by os (conditional, optional), posixpath (optional), shutil (conditional), importlib._bootstrap_external (conditional)
missing module named resource - imported by posix (top-level), IPython.utils.timing (optional)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
runtime module named distutils.sysconfig - imported by cffi._shimmed_dist_utils (optional), setuptools._distutils.util (delayed, conditional), setuptools._distutils.extension (delayed), setuptools._distutils.command.build_ext (delayed), setuptools._distutils.command.build_scripts (top-level), setuptools._distutils.cygwinccompiler (delayed), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_util (top-level)
runtime module named distutils - imported by distutils._collections (top-level), distutils._functools (top-level), distutils._itertools (top-level), distutils._log (top-level), distutils._macos_compat (top-level), distutils._modified (top-level), distutils._msvccompiler (top-level), distutils._vendor (top-level), distutils.archive_util (top-level), distutils.bcppcompiler (top-level), distutils.ccompiler (top-level), distutils.cmd (top-level), distutils.command (top-level), distutils.compat (top-level), distutils.config (top-level), distutils.core (top-level), distutils.cygwinccompiler (top-level), distutils.debug (top-level), distutils.dep_util (top-level), distutils.dir_util (top-level), distutils.dist (top-level), distutils.errors (top-level), distutils.extension (top-level), distutils.fancy_getopt (top-level), distutils.file_util (top-level), distutils.filelist (top-level), distutils.log (top-level), distutils.msvc9compiler (top-level), distutils.msvccompiler (top-level), distutils.spawn (top-level), distutils.sysconfig (top-level), distutils.tests (top-level), distutils.text_file (top-level), distutils.unixccompiler (top-level), distutils.util (top-level), distutils.version (top-level), distutils.versionpredicate (top-level), distutils.zosccompiler (top-level), setuptools.discovery (top-level), setuptools.errors (top-level), setuptools.installer (top-level), setuptools.command.egg_info (top-level), setuptools.command.sdist (top-level), setuptools.command.setopt (top-level), setuptools.command.bdist_egg (top-level), setuptools.wheel (delayed), setuptools.command.bdist_wheel (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.util (delayed, conditional), setuptools._distutils.command.build_ext (delayed), setuptools._distutils.command.build_scripts (top-level), setuptools._distutils.command.sdist (top-level), setuptools._distutils.cygwinccompiler (delayed), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_ccompiler (top-level), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_msvc9compiler (delayed), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_util (top-level), setuptools._distutils.tests.test_version (top-level)
missing module named _posixsubprocess - imported by subprocess (conditional), multiprocessing.util (delayed)
missing module named fcntl - imported by subprocess (optional), eventlet.greenio.base (delayed, optional)
runtime module named distutils.util - imported by setuptools._core_metadata (top-level), setuptools.discovery (top-level), setuptools.dist (top-level), setuptools.wheel (top-level), setuptools.command.egg_info (top-level), setuptools.command.setopt (top-level), setuptools._distutils.extension (delayed), setuptools._distutils.unixccompiler (delayed, conditional), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_util (top-level)
missing module named pytest - imported by trio.testing._raises_group (conditional, optional), setuptools._vendor.typeguard._pytest_plugin (conditional), setuptools._distutils.tests.support (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.unix_compat (top-level), setuptools._distutils.tests.test_bdist_dumb (top-level), setuptools._distutils.tests.test_bdist_rpm (top-level), setuptools._distutils.tests.test_build_clib (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_ccompiler (top-level), setuptools._distutils.tests.test_check (top-level), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_config (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_core (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_dist (top-level), setuptools._distutils.tests.test_extension (top-level), setuptools._distutils.tests.test_file_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_data (top-level), setuptools._distutils.tests.test_install_headers (top-level), setuptools._distutils.tests.test_install_lib (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_modified (top-level), setuptools._distutils.tests.test_msvc9compiler (top-level), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_upload (top-level), setuptools._distutils.tests.test_util (top-level), setuptools._distutils.tests.test_version (top-level)
runtime module named distutils.version - imported by setuptools._distutils.tests.test_version (top-level)
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named _scproxy - imported by urllib.request (conditional)
missing module named termios - imported by getpass (optional), tty (top-level), IPython.core.page (delayed, optional), prompt_toolkit.input.vt100 (top-level)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
runtime module named distutils.tests.test_config - imported by setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_upload (top-level)
runtime module named distutils.tests - imported by distutils.tests.compat (top-level), distutils.tests.support (top-level), distutils.tests.test_archive_util (top-level), distutils.tests.test_bdist (top-level), distutils.tests.test_bdist_dumb (top-level), distutils.tests.test_bdist_rpm (top-level), distutils.tests.test_build (top-level), distutils.tests.test_build_clib (top-level), distutils.tests.test_build_ext (top-level), distutils.tests.test_build_py (top-level), distutils.tests.test_build_scripts (top-level), distutils.tests.test_ccompiler (top-level), distutils.tests.test_check (top-level), distutils.tests.test_clean (top-level), distutils.tests.test_cmd (top-level), distutils.tests.test_config (top-level), distutils.tests.test_config_cmd (top-level), distutils.tests.test_core (top-level), distutils.tests.test_cygwinccompiler (top-level), distutils.tests.test_dir_util (top-level), distutils.tests.test_dist (top-level), distutils.tests.test_extension (top-level), distutils.tests.test_file_util (top-level), distutils.tests.test_filelist (top-level), distutils.tests.test_install (top-level), distutils.tests.test_install_data (top-level), distutils.tests.test_install_headers (top-level), distutils.tests.test_install_lib (top-level), distutils.tests.test_install_scripts (top-level), distutils.tests.test_log (top-level), distutils.tests.test_mingwccompiler (top-level), distutils.tests.test_modified (top-level), distutils.tests.test_msvc9compiler (top-level), distutils.tests.test_msvccompiler (top-level), distutils.tests.test_register (top-level), distutils.tests.test_sdist (top-level), distutils.tests.test_spawn (top-level), distutils.tests.test_sysconfig (top-level), distutils.tests.test_text_file (top-level), distutils.tests.test_unixccompiler (top-level), distutils.tests.test_upload (top-level), distutils.tests.test_util (top-level), distutils.tests.test_version (top-level), distutils.tests.test_versionpredicate (top-level), distutils.tests.unix_compat (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_bdist (top-level), setuptools._distutils.tests.test_bdist_dumb (top-level), setuptools._distutils.tests.test_bdist_rpm (top-level), setuptools._distutils.tests.test_build (top-level), setuptools._distutils.tests.test_build_clib (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_check (top-level), setuptools._distutils.tests.test_clean (top-level), setuptools._distutils.tests.test_config (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_dist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_data (top-level), setuptools._distutils.tests.test_install_headers (top-level), setuptools._distutils.tests.test_install_lib (top-level), setuptools._distutils.tests.test_install_scripts (top-level), setuptools._distutils.tests.test_modified (top-level), setuptools._distutils.tests.test_msvc9compiler (top-level), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_text_file (top-level)
runtime module named distutils.command.upload - imported by setuptools._distutils.tests.test_upload (top-level)
runtime module named distutils.command - imported by distutils.command._framework_compat (top-level), distutils.command.bdist (top-level), distutils.command.bdist_dumb (top-level), distutils.command.bdist_rpm (top-level), distutils.command.build (top-level), distutils.command.build_clib (top-level), distutils.command.build_ext (top-level), distutils.command.build_py (top-level), distutils.command.build_scripts (top-level), distutils.command.check (top-level), distutils.command.clean (top-level), distutils.command.config (top-level), distutils.command.install (top-level), distutils.command.install_data (top-level), distutils.command.install_egg_info (top-level), distutils.command.install_headers (top-level), distutils.command.install_lib (top-level), distutils.command.install_scripts (top-level), distutils.command.register (top-level), distutils.command.sdist (top-level), distutils.command.upload (top-level), setuptools.dist (top-level), setuptools._distutils.dist (delayed), setuptools._distutils.tests.test_build_ext (delayed), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_upload (top-level)
runtime module named distutils.unixccompiler - imported by setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_unixccompiler (top-level)
runtime module named distutils.compat - imported by distutils.compat.py38 (top-level), distutils.compat.py39 (top-level), setuptools._distutils.tests.test_unixccompiler (top-level)
missing module named path - imported by setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_sysconfig (top-level), setuptools._distutils.tests.test_text_file (top-level)
missing module named 'jaraco.path' - imported by setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_dist (top-level), setuptools._distutils.tests.test_file_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_text_file (top-level)
runtime module named distutils.text_file - imported by setuptools._distutils.extension (delayed), setuptools._distutils.sysconfig (delayed), setuptools._distutils.tests.test_text_file (top-level)
missing module named 'jaraco.envs' - imported by setuptools._distutils.tests.test_sysconfig (top-level)
missing module named 'test.support' - imported by setuptools._vendor.importlib_resources.tests.test_functional (optional), setuptools._distutils.tests.compat.py38 (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_sysconfig (top-level)
runtime module named distutils.ccompiler - imported by cffi._shimmed_dist_utils (optional), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_ccompiler (top-level), setuptools._distutils.tests.test_msvccompiler (delayed), setuptools._distutils.tests.test_sysconfig (top-level)
runtime module named distutils.spawn - imported by setuptools._distutils.cmd (delayed), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_spawn (top-level)
runtime module named distutils.filelist - imported by setuptools.monkey (top-level), setuptools.command.egg_info (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_sdist (top-level)
runtime module named distutils.command.sdist - imported by setuptools.command.sdist (top-level), setuptools._distutils.tests.test_sdist (top-level)
runtime module named distutils.archive_util - imported by setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_archive_util (top-level), setuptools._distutils.tests.test_sdist (top-level)
missing module named docutils - imported by setuptools._distutils.tests.test_register (optional)
runtime module named distutils.command.register - imported by setuptools._distutils.tests.test_register (top-level)
runtime module named distutils._msvccompiler - imported by setuptools._distutils.tests.test_msvccompiler (top-level)
runtime module named distutils.msvc9compiler - imported by cffi._shimmed_dist_utils (conditional, optional), setuptools._distutils.msvccompiler (conditional), setuptools._distutils.tests.test_msvc9compiler (delayed)
runtime module named distutils.msvccompiler - imported by setuptools._distutils.tests.test_msvc9compiler (conditional)
runtime module named distutils._modified - imported by setuptools._distutils.file_util (delayed), setuptools._distutils.tests.test_modified (top-level)
runtime module named distutils.cygwinccompiler - imported by setuptools._distutils.tests.test_cygwinccompiler (top-level), setuptools._distutils.tests.test_mingwccompiler (delayed)
runtime module named distutils._log - imported by setuptools._distutils.command.bdist_dumb (top-level), setuptools._distutils.command.bdist_rpm (top-level), setuptools._distutils.command.build_clib (top-level), setuptools._distutils.command.build_ext (top-level), setuptools._distutils.command.build_py (top-level), setuptools._distutils.command.build_scripts (top-level), setuptools._distutils.command.clean (top-level), setuptools._distutils.command.config (top-level), setuptools._distutils.command.install (top-level), setuptools._distutils.command.install_scripts (top-level), setuptools._distutils.command.register (top-level), setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_config_cmd (top-level), setuptools._distutils.tests.test_log (top-level)
runtime module named distutils.command.install_scripts - imported by setuptools._distutils.tests.test_install_scripts (top-level)
runtime module named distutils.extension - imported by setuptools.extension (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_extension (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_lib (top-level)
runtime module named distutils.command.install_lib - imported by setuptools._distutils.tests.test_install_lib (top-level)
runtime module named distutils.command.install_headers - imported by setuptools._distutils.tests.test_install_headers (top-level)
runtime module named distutils.command.install_data - imported by setuptools._distutils.tests.test_install_data (top-level)
runtime module named distutils.command.install - imported by setuptools._distutils.tests.test_install (top-level)
missing module named usercustomize - imported by site (delayed, optional)
missing module named sitecustomize - imported by site (delayed, optional)
missing module named readline - imported by cmd (delayed, conditional, optional), code (delayed, conditional, optional), pdb (delayed, optional), pstats (conditional, optional), site (delayed, optional), rlcompleter (optional)
missing module named vms_lib - imported by platform (delayed, optional)
missing module named 'java.lang' - imported by platform (delayed, optional)
missing module named java - imported by platform (delayed)
missing module named _winreg - imported by platform (delayed, optional), selenium.webdriver.firefox.firefox_binary (delayed, optional), pygments.formatters.img (optional)
runtime module named distutils.debug - imported by setuptools.dist (top-level), setuptools._distutils.ccompiler (delayed), setuptools._distutils.cmd (delayed), setuptools._distutils.filelist (delayed), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_filelist (top-level)
runtime module named distutils.file_util - imported by setuptools._distutils.dir_util (delayed), setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_file_util (top-level)
runtime module named distutils.tests.test_dist - imported by setuptools._distutils.tests.test_dist (delayed)
runtime module named distutils.dist - imported by setuptools.dist (top-level), setuptools.config.setupcfg (conditional), setuptools.config._apply_pyprojecttoml (conditional), wheel.cli.convert (optional), setuptools._vendor.wheel.cli.convert (optional), setuptools._distutils.cmd (delayed), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_core (top-level), setuptools._distutils.tests.test_dist (top-level)
runtime module named distutils.cmd - imported by setuptools.dist (top-level), setuptools._distutils.dist (delayed), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_dist (top-level)
runtime module named distutils.dir_util - imported by setuptools.command.bdist_egg (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.command.sdist (top-level), setuptools._distutils.tests.test_dir_util (top-level)
runtime module named distutils.command.config - imported by setuptools._distutils.tests.test_config_cmd (top-level)
runtime module named distutils.command.clean - imported by setuptools._distutils.tests.test_clean (top-level)
missing module named pygments.lexers.PrologLexer - imported by pygments.lexers (top-level), pygments.lexers.cplint (top-level)
missing module named pygments.lexers.PythonLexer - imported by pygments.lexers (top-level), IPython.core.oinspect (top-level)
missing module named PIL - imported by matplotlib_inline.config (delayed, optional), pygments.formatters.img (optional)
missing module named ctags - imported by pygments.formatters.html (optional)
missing module named pygments.formatters.LatexFormatter - imported by pygments.formatters (delayed), IPython.lib.display (delayed)
missing module named pygments.formatters.HtmlFormatter - imported by pygments.formatters (delayed), IPython.lib.display (delayed), IPython.core.oinspect (top-level), stack_data.core (delayed)
missing module named chardet - imported by requests (optional), pygments.lexer (delayed, conditional, optional)
runtime module named distutils.command.check - imported by setuptools._distutils.tests.test_check (top-level)
runtime module named distutils.command.build_scripts - imported by setuptools._distutils.tests.test_build_scripts (top-level)
runtime module named distutils.command.build_py - imported by setuptools._distutils.tests.test_build_py (top-level)
missing module named xx - imported by setuptools._distutils.tests.test_build_ext (delayed)
runtime module named distutils.tests.support - imported by setuptools._distutils.tests.test_build_ext (top-level)
runtime module named distutils.command.build_clib - imported by setuptools._distutils.tests.test_build_clib (top-level)
runtime module named distutils.command.build - imported by setuptools.command.build (top-level), setuptools._distutils.tests.test_build (top-level)
runtime module named distutils.command.bdist_rpm - imported by setuptools._distutils.tests.test_bdist_rpm (top-level)
runtime module named distutils.command.bdist_dumb - imported by setuptools._distutils.tests.test_bdist_dumb (top-level)
runtime module named distutils.command.bdist - imported by setuptools.command (top-level), setuptools._distutils.tests.test_bdist (top-level)
runtime module named distutils.versionpredicate - imported by setuptools._distutils.dist (delayed)
runtime module named distutils.fancy_getopt - imported by setuptools.dist (top-level), setuptools._distutils.ccompiler (delayed), setuptools._distutils.cmd (delayed)
missing module named _manylinux - imported by packaging._manylinux (delayed, optional), setuptools._vendor.packaging._manylinux (delayed, optional), wheel.vendored.packaging._manylinux (delayed, optional), setuptools._vendor.wheel.vendored.packaging._manylinux (delayed, optional), setuptools._distutils._vendor.packaging._manylinux (delayed, optional)
missing module named typeshed - imported by typeguard._decorators (conditional)
missing module named 'typeshed.stdlib' - imported by setuptools._vendor.typeguard._decorators (conditional)
missing module named jnius - imported by platformdirs.android (delayed, conditional, optional), setuptools._vendor.platformdirs.android (delayed, conditional, optional)
missing module named android - imported by platformdirs.android (delayed, conditional, optional), setuptools._vendor.platformdirs.android (delayed, conditional, optional)
missing module named mod - imported by setuptools._vendor.importlib_resources.tests.test_files (delayed)
missing module named 'jaraco.test' - imported by setuptools._vendor.importlib_resources.tests.compat.py39 (top-level)
runtime module named distutils.command.build_ext - imported by cffi._shimmed_dist_utils (optional), setuptools (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_install (top-level)
missing module named _typeshed - imported by pkg_resources (conditional), trio._file_io (conditional), trio._path (conditional), prompt_toolkit.eventloop.inputhook (conditional)
missing module named trove_classifiers - imported by setuptools.config._validate_pyproject.formats (optional)
runtime module named distutils.log - imported by setuptools.logging (top-level), setuptools.discovery (top-level), setuptools.dist (top-level), setuptools.installer (top-level), setuptools.command.egg_info (top-level), setuptools.command.sdist (top-level), setuptools.command.setopt (top-level), setuptools.command.bdist_egg (top-level), setuptools.wheel (delayed), setuptools.command.bdist_wheel (top-level), cffi._shimmed_dist_utils (optional)
runtime module named distutils.errors - imported by setuptools (top-level), setuptools.msvc (top-level), setuptools.errors (top-level), setuptools.dist (top-level), setuptools.config.expand (top-level), setuptools.installer (top-level), setuptools.command.egg_info (top-level), setuptools.command.setopt (top-level), setuptools.extension (top-level), setuptools.archive_util (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.tests (delayed), setuptools._distutils.tests.test_build_clib (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_check (top-level), setuptools._distutils.tests.test_cmd (top-level), setuptools._distutils.tests.test_dir_util (top-level), setuptools._distutils.tests.test_file_util (top-level), setuptools._distutils.tests.test_filelist (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_lib (top-level), setuptools._distutils.tests.test_mingwccompiler (top-level), setuptools._distutils.tests.test_modified (top-level), setuptools._distutils.tests.test_msvc9compiler (top-level), setuptools._distutils.tests.test_msvccompiler (top-level), setuptools._distutils.tests.test_register (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_spawn (top-level), setuptools._distutils.tests.test_unixccompiler (top-level), setuptools._distutils.tests.test_upload (top-level), setuptools._distutils.tests.test_util (top-level)
runtime module named distutils.core - imported by setuptools (top-level), setuptools.dist (top-level), setuptools.extension (top-level), cffi._shimmed_dist_utils (optional), setuptools._distutils.dist (delayed), setuptools._distutils.tests.support (top-level), setuptools._distutils.tests.test_bdist_dumb (top-level), setuptools._distutils.tests.test_bdist_rpm (top-level), setuptools._distutils.tests.test_build_ext (top-level), setuptools._distutils.tests.test_build_py (top-level), setuptools._distutils.tests.test_build_scripts (top-level), setuptools._distutils.tests.test_core (top-level), setuptools._distutils.tests.test_install (top-level), setuptools._distutils.tests.test_install_scripts (top-level), setuptools._distutils.tests.test_sdist (top-level), setuptools._distutils.tests.test_upload (top-level)
missing module named pyimod02_importers - imported by C:\Users\xrilang\Desktop\ele_fengshen\venv\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed), C:\Users\xrilang\Desktop\ele_fengshen\venv\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py (delayed)
missing module named 'yapf.yapflib' - imported by IPython.terminal.interactiveshell (delayed)
missing module named yapf - imported by IPython.terminal.interactiveshell (delayed)
missing module named black - imported by IPython.terminal.interactiveshell (delayed)
missing module named prompt_toolkit.filters.vi_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.document (top-level), prompt_toolkit.key_binding.bindings.page_navigation (top-level), prompt_toolkit.widgets.toolbars (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named 'prompt_toolkit.key_binding.key_bindings.vi' - imported by prompt_toolkit.key_binding.vi_state (conditional)
missing module named 'backports.functools_lru_cache' - imported by wcwidth.wcwidth (optional)
missing module named prompt_toolkit.filters.is_done - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.menus (top-level), prompt_toolkit.widgets.base (top-level), prompt_toolkit.shortcuts.progress_bar.base (top-level), prompt_toolkit.shortcuts.prompt (top-level)
missing module named prompt_toolkit.filters.has_completions - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.menus (top-level), prompt_toolkit.widgets.toolbars (top-level), prompt_toolkit.widgets.dialogs (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named prompt_toolkit.filters.vi_insert_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.containers (top-level), prompt_toolkit.key_binding.bindings.basic (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named prompt_toolkit.filters.emacs_insert_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.containers (top-level), prompt_toolkit.key_binding.bindings.basic (top-level), prompt_toolkit.key_binding.bindings.emacs (top-level), IPython.terminal.shortcuts.filters (top-level)
missing module named prompt_toolkit.filters.is_searching - imported by prompt_toolkit.filters (top-level), prompt_toolkit.search (top-level), prompt_toolkit.key_binding.bindings.search (top-level), prompt_toolkit.key_binding.bindings.vi (top-level)
missing module named numpydoc - imported by jedi.inference.docstrings (delayed)
missing module named argcomplete - imported by traitlets.config.loader (delayed, optional), traitlets.config.argcomplete_config (optional)
missing module named traitlets.config.Application - imported by traitlets.config (delayed, conditional), traitlets.log (delayed, conditional)
missing module named sip - imported by IPython.external.qt_loaders (delayed, optional)
missing module named numpy - imported by IPython.lib.display (delayed), IPython.core.formatters (delayed, conditional), IPython.core.magics.namespace (delayed, conditional, optional)
missing module named 'matplotlib.figure' - imported by matplotlib_inline.backend_inline (top-level)
missing module named 'matplotlib._pylab_helpers' - imported by matplotlib_inline.backend_inline (top-level)
missing module named 'matplotlib.backends' - imported by matplotlib_inline.backend_inline (top-level)
missing module named matplotlib - imported by matplotlib_inline.backend_inline (top-level)
missing module named rpds.HashTrieMap - imported by rpds (top-level), referencing._core (top-level), jsonschema._types (top-level), jsonschema.validators (top-level)
missing module named rpds.List - imported by rpds (top-level), referencing._core (top-level)
missing module named rpds.HashTrieSet - imported by rpds (top-level), referencing._core (top-level)
missing module named simplejson - imported by requests.compat (conditional, optional)
missing module named dummy_threading - imported by requests.cookies (optional)
missing module named zstandard - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named brotli - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named brotlicffi - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named win_inet_pton - imported by socks (conditional, optional)
missing module named cryptography - imported by urllib3.contrib.pyopenssl (top-level), requests (conditional, optional)
missing module named 'OpenSSL.crypto' - imported by urllib3.contrib.pyopenssl (delayed, conditional), eventlet.green.OpenSSL.crypto (top-level)
missing module named 'cryptography.x509' - imported by urllib3.contrib.pyopenssl (delayed, optional)
missing module named OpenSSL - imported by urllib3.contrib.pyopenssl (top-level), eventlet.greenio.base (optional), eventlet.green.OpenSSL.SSL (top-level), trio._dtls (delayed, conditional)
missing module named pyodide - imported by urllib3.contrib.emscripten.fetch (top-level)
missing module named js - imported by urllib3.contrib.emscripten.fetch (top-level)
missing module named isoduration - imported by jsonschema._format (top-level)
missing module named uri_template - imported by jsonschema._format (top-level)
missing module named jsonpointer - imported by jsonschema._format (top-level)
missing module named webcolors - imported by jsonschema._format (top-level)
missing module named rfc3339_validator - imported by jsonschema._format (top-level)
missing module named rfc3986_validator - imported by jsonschema._format (optional)
missing module named rfc3987 - imported by jsonschema._format (optional)
missing module named fqdn - imported by jsonschema._format (top-level)
missing module named prompt_toolkit.filters.vi_insert_multiple_mode - imported by prompt_toolkit.filters (top-level), prompt_toolkit.layout.processors (top-level)
missing module named docrepr - imported by IPython.core.interactiveshell (optional)
missing module named cPickle - imported by pickleshare (optional), pycparser.ply.yacc (delayed, optional)
missing module named pathlib2 - imported by pickleshare (optional)
missing module named imp - imported by eventlet.patcher (optional), eventlet.tpool (optional), cffi.verifier (conditional), cffi._imp_emulation (optional)
missing module named _dummy_thread - imported by cffi.lock (conditional, optional), sortedcontainers.sortedlist (conditional, optional)
missing module named dummy_thread - imported by cffi.lock (conditional, optional), sortedcontainers.sortedlist (conditional, optional)
missing module named thread - imported by cffi.lock (conditional, optional), cffi.cparser (conditional, optional), sortedcontainers.sortedlist (conditional, optional)
missing module named cStringIO - imported by cffi.ffiplatform (optional)
missing module named cffi._pycparser - imported by cffi (optional), cffi.cparser (optional)
missing module named 'curio.meta' - imported by sniffio._impl (delayed, conditional)
missing module named exceptiongroup - imported by trio._core._run (conditional), trio._highlevel_open_tcp_listeners (conditional), trio._highlevel_open_tcp_stream (conditional), trio.testing._check_streams (conditional), trio.testing._raises_group (conditional)
missing module named _pytest - imported by trio.testing._raises_group (conditional)
missing module named hypothesis - imported by trio._core._run (delayed)
missing module named tputil - imported by trio._core._concat_tb (optional)
missing module named curio - imported by IPython.core.async_helpers (delayed)
missing module named 'astroid.node_classes' - imported by asttokens.astroid_compat (optional)
missing module named 'astroid.nodes' - imported by asttokens.astroid_compat (optional)
missing module named astroid - imported by asttokens.astroid_compat (optional)
missing module named six.moves.xrange - imported by six.moves (top-level), asttokens.asttokens (top-level)
runtime module named six.moves - imported by asttokens.asttokens (top-level)
missing module named StringIO - imported by six (conditional)
missing module named _curses - imported by curses (top-level), curses.has_key (top-level)
missing module named 'ipykernel.kernelapp' - imported by IPython (delayed)
missing module named ipykernel - imported by IPython (delayed)
missing module named pexpect - imported by IPython.utils._process_posix (top-level)
missing module named System - imported by IPython.utils._process_cli (top-level)
missing module named clr - imported by IPython.utils._process_cli (top-level)
missing module named wsaccel - imported by websocket._utils (optional)
missing module named 'python_socks.sync' - imported by websocket._http (optional)
missing module named 'python_socks._types' - imported by websocket._http (optional)
missing module named python_socks - imported by websocket._http (optional)
missing module named 'wsaccel.xormask' - imported by websocket._abnf (optional)
missing module named aiohttp - imported by engineio.async_client (optional)
missing module named aio_pika - imported by socketio.async_aiopika_manager (optional)
missing module named 'aioredis.exceptions' - imported by socketio.async_redis_manager (optional)
missing module named aioredis - imported by socketio.async_redis_manager (optional)
missing module named 'redis.exceptions' - imported by socketio.async_redis_manager (optional)
missing module named redis - imported by socketio.redis_manager (optional), socketio.async_redis_manager (optional)
missing module named monotonic - imported by eventlet.hubs.hub (optional), eventlet (optional)
missing module named itimer - imported by eventlet.hubs.hub (conditional, optional)
missing module named psycopg2 - imported by eventlet.support.psycopg2_patcher (top-level)
missing module named 'OpenSSL.SSL' - imported by eventlet.green.OpenSSL.SSL (top-level)
missing module named 'OpenSSL.version' - imported by eventlet.green.OpenSSL.version (top-level)
missing module named 'OpenSSL.tsafe' - imported by eventlet.green.OpenSSL.tsafe (top-level)
missing module named kafka - imported by socketio.kafka_manager (optional)
missing module named 'gevent.monkey' - imported by socketio.redis_manager (delayed, conditional)
missing module named gevent - imported by socketio.kombu_manager (delayed, conditional)
missing module named kombu - imported by socketio.kombu_manager (optional)
missing module named msgpack - imported by socketio.msgpack_packet (top-level)

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -15,4 +15,10 @@ interval = 60
[web]
host = 0.0.0.0
port = 8868
debug = True
debug = True
key = 5F3EEC36FB021AF31011F2B448AFC064
[WebSocket]
host=127.0.0.1
port=8868
WEBSOCKET_URL = ws://127.0.0.1:8868

File diff suppressed because it is too large Load Diff

BIN
dist/chromedriver-win64/chromedriver.exe vendored Normal file

Binary file not shown.

24
dist/config.ini vendored Normal file
View File

@ -0,0 +1,24 @@
[base]
url_base = https://aeolus.ele.me
url_login = https://mozi-login.alibaba-inc.com/?APP_NAME=LPD_TEAM_AEOLUS&BACK_URL=
url_home = https://aeolus.ele.me/dashboard
url_work = https://r.ele.me/pikipek/schedule.html?platform=fs&subType=team#/group/schedule/work-check?teamId=17407820
account = 17323612594
password = Cjl1111.
# 浏览器驱动,暂只支持 firefox edge chrome默认
driver = chrome
driver_path_edge = ./edgedriver_win64/msedgedriver.exe
driver_path_chrome = chromedriver-win64/chromedriver.exe
# 间隔时间 单位秒 就是每隔多少秒检查一次数据
interval = 10
[web]
host = 0.0.0.0
port = 8868
debug = True
key = 5F3EEC36FB021AF31011F2B448AFC064
[WebSocket]
host=127.0.0.1
port=8868
WEBSOCKET_URL = ws://127.0.0.1:8868

55
dist/edgedriver_win64/Driver_Notes/EULA vendored Normal file
View File

@ -0,0 +1,55 @@
MICROSOFT SOFTWARE LICENSE TERMS
MICROSOFT EDGE WEBDRIVER
These license terms are an agreement between you and Microsoft Corporation (or one of its affiliates). They apply to the software named above and any Microsoft services or software updates (except to the extent such services or updates are accompanied by new or additional terms, in which case those different terms apply prospectively and do not alter your or Microsofts rights relating to pre-updated software or services). IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS.
1. INSTALLATION AND USE RIGHTS.
a) General. You may install and use any number of copies of the software.
b) Included Microsoft Applications. The software may include other Microsoft applications. These license terms apply to those included applications, if any, unless other license terms are provided with the other Microsoft applications.
c) Third Party Components. The software may include third party components with separate legal notices or governed by other agreements, as may be described in the ThirdPartyNotices file(s) accompanying the software.
2. DATA.
a) Data Collection. The software may collect information about you and your use of the software, and send that to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may opt-out of many of these scenarios, but not all, as described in the product documentation.  There are also some features in the software that may enable you to collect data from users of your applications. If you use these features to enable data collection in your applications, you must comply with applicable law, including providing appropriate notices to users of your applications. You can learn more about data collection and use in the help documentation and the privacy statement at https://aka.ms/privacy. Your use of the software operates as your consent to these practices.
b) Processing of Personal Data. To the extent Microsoft is a processor or subprocessor of personal data in connection with the software, Microsoft makes the commitments in the European Union General Data Protection Regulation Terms of the Online Services Terms to all customers effective May 25, 2018, at https://docs.microsoft.com/en-us/legal/gdpr.
3. SCOPE OF LICENSE. The software is licensed, not sold. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you will not (and have no right to):
a) work around any technical limitations in the software that only allow you to use it in certain ways;
b) reverse engineer, decompile or disassemble the software, or otherwise attempt to derive the source code for the software, except and to the extent required by third party licensing terms governing use of certain open source components that may be included in the software;
c) remove, minimize, block, or modify any notices of Microsoft or its suppliers in the software;
d) use the software in any way that is against the law or to create or propagate malware; or
e) share, publish, distribute, or lease the software, provide the software as a stand-alone offering for others to use, or transfer the software or this agreement to any third party.
4. EXPORT RESTRICTIONS. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information on export restrictions, visit https://aka.ms/exporting.
5. SUPPORT SERVICES. Microsoft is not obligated under this agreement to provide any support services for the software. Any support provided is “as is”, “with all faults”, and without warranty of any kind.
6. UPDATES. The software may periodically check for updates, and download and install them for you. You may obtain updates only from Microsoft or authorized sources. Microsoft may need to update your system to provide you with updates. You agree to receive these automatic updates without any additional notice. Updates may not include or support all existing software features, services, or peripheral devices.
7. ENTIRE AGREEMENT. This agreement, and any other terms Microsoft may provide for supplements, updates, or third-party applications, is the entire agreement for the software.
8. APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES. If you acquired the software in the United States or Canada, the laws of the state or province where you live (or, if a business, where your principal place of business is located) govern the interpretation of this agreement, claims for its breach, and all other claims (including consumer protection, unfair competition, and tort claims), regardless of conflict of laws principles. If you acquired the software in any other country, its laws apply. If U.S. federal jurisdiction exists, you and Microsoft consent to exclusive jurisdiction and venue in the federal court in King County, Washington for all disputes heard in court. If not, you and Microsoft consent to exclusive jurisdiction and venue in the Superior Court of King County, Washington for all disputes heard in court.
9. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain legal rights. You may have other rights, including consumer rights, under the laws of your state, province, or country. Separate and apart from your relationship with Microsoft, you may also have rights with respect to the party from which you acquired the software. This agreement does not change those other rights if the laws of your state, province, or country do not permit it to do so. For example, if you acquired the software in one of the below regions, or mandatory country law applies, then the following provisions apply to you:
a) Australia. You have statutory guarantees under the Australian Consumer Law and nothing in this agreement is intended to affect those rights.
b) Canada. If you acquired this software in Canada, you may stop receiving updates by turning off the automatic update feature, disconnecting your device from the Internet (if and when you re-connect to the Internet, however, the software will resume checking for and installing updates), or uninstalling the software. The product documentation, if any, may also specify how to turn off updates for your specific device or software.
c) Germany and Austria.
i. Warranty. The properly licensed software will perform substantially as described in any Microsoft materials that accompany the software. However, Microsoft gives no contractual guarantee in relation to the licensed software.
ii. Limitation of Liability. In case of intentional conduct, gross negligence, claims based on the Product Liability Act, as well as, in case of death or personal or physical injury, Microsoft is liable according to the statutory law.
Subject to the foregoing clause ii., Microsoft will only be liable for slight negligence if Microsoft is in breach of such material contractual obligations, the fulfillment of which facilitate the due performance of this agreement, the breach of which would endanger the purpose of this agreement and the compliance with which a party may constantly trust in (so-called "cardinal obligations"). In other cases of slight negligence, Microsoft will not be liable for slight negligence.
10. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR CONDITIONS. TO THE EXTENT PERMITTED UNDER APPLICABLE LAWS, MICROSOFT EXCLUDES ALL IMPLIED WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
11. LIMITATION ON AND EXCLUSION OF DAMAGES. IF YOU HAVE ANY BASIS FOR RECOVERING DAMAGES DESPITE THE PRECEDING DISCLAIMER OF WARRANTY, YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.
This limitation applies to (a) anything related to the software, services, content (including code) on third party Internet sites, or third party applications; and (b) claims for breach of contract, warranty, guarantee, or condition; strict liability, negligence, or other tort; or any other claim; in each case to the extent permitted by applicable law.
It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your state, province, or country may not allow the exclusion or limitation of incidental, consequential, or other damages.
Please note: As this software is distributed in Canada, some of the clauses in this agreement are provided below in French.
Remarque: Ce logiciel étant distribué au Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français.
EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft naccorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, dadéquation à un usage particulier et dabsence de contrefaçon sont exclues.
LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices.
Cette limitation concerne:
• tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers; et
• les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou dune autre faute dans la limite autorisée par la loi en vigueur.
Elle sapplique également, même si Microsoft connaissait ou devrait connaître léventualité dun tel dommage. Si votre pays nautorise pas lexclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou lexclusion ci-dessus ne sappliquera pas à votre égard.
EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir dautres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas.
DWT 28909236v1 0085000-001126
DWT 28909236v1 0085000-001126

7552
dist/edgedriver_win64/Driver_Notes/LICENSE vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

BIN
dist/edgedriver_win64/msedgedriver.exe vendored Normal file

Binary file not shown.

176
dist/templates/index.html vendored Normal file
View File

@ -0,0 +1,176 @@
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Table Update Example</title>
<!-- 引入 xlsx 库 -->
<script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
</head>
<style>
/* 页面样式 */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
/* 表格样式 */
#data-table {
width: 95%; /* 减少一些边距 */
border-collapse: collapse;
border: 1px solid black;
margin: auto;
page-break-inside: avoid; /* 防止在表格内部分页 */
}
#data-table th,
#data-table td {
border: 1px solid black;
padding: 8px;
text-align: left;
}
#data-table th {
background-color: #f2f2f2;
}
/* 打印样式 */
@media print {
body, #data-table {
margin: 0;
}
#data-table {
width: 297mm; /* A4 paper width in landscape mode */
height: auto;
margin: 0 auto;
overflow-x: auto; /* 滚动条只在需要时出现 */
}
button {
display: none;
}
}
/* 打印按钮样式 */
button {
display: block;
margin: 1em auto;
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
}
</style>
<body>
<button onclick="window.print()">打印数据</button>
<!-- 添加一个导出按钮 -->
<button onclick="exportToExcel()">导出到Excel</button>
<select id="scheduleFilter" onchange="filterTable()">
<option value="">全部</option>
<option value="是"></option>
<option value="否"></option>
</select>
<table id="data-table">
<thead>
<tr>
<th>时间</th><th> 姓名</th> <th> 时段 </th><th> 上线时间 </th><th> 是否排班 </th><th> 工作状态 </th><th> 全天在线时长</th> <th> 全天背单时长 </th><th> 全天完单量 </th><th> 时段内在线时长 </th><th> 时段内背单时长 </th><th>
</tr>
</thead>
<tbody>
<!-- 动态生成的数据行 -->
</tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.js"></script>
<script>
// client.js
const socket = io();
let allRows = []; // 存储所有原始行数据,以便筛选时使用
// 监听 'update_table' 事件
socket.on('update_table', function(data) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
tableBody.innerHTML = ''; // 清空现有行
// 获取当前时间
const now = new Date();
const timeString = now.toLocaleString(); // 或者使用其他格式化方式
// 保存原始行数据并生成新的行
allRows = [];
data['未及格成员'].forEach(function(rowData) {
const row = tableBody.insertRow();
allRows.push(row); // 保存行
// 添加时间列
const timeCell = row.insertCell(0); // 插入到第一列
timeCell.textContent = timeString;
// 添加其他数据列
rowData.forEach(function(cellData) {
const cell = row.insertCell();
cell.textContent = cellData;
});
});
// 初始筛选
filterTable();
});
// 连接事件
socket.on('connect', function() {
console.log('Connected to server');
});
// 筛选表格函数
function filterTable() {
const selectElement = document.getElementById('scheduleFilter');
const selectedValue = selectElement.value;
allRows.forEach(row => {
const isScheduledCell = row.cells[4]; // 假定“是否排班”是第5列
if (selectedValue === '' || isScheduledCell.textContent === selectedValue) {
row.style.display = '';
} else {
row.style.display = 'none';
}
});
}
// 导出到Excel的函数
function exportToExcel() {
// 获取表格
var table = document.getElementById('data-table');
// 创建工作表
var ws = XLSX.utils.table_to_sheet(table);
// 创建工作簿
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
// 将工作簿输出为二进制格式
var wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
// 将二进制数据转换为Blob对象
var blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' });
// 创建下载链接
var link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = 'exported_data.xlsx';
link.click();
}
// 辅助函数用于将二进制字符串转换为ArrayBuffer
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i=0; i<s.length; i++) {
view[i] = s.charCodeAt(i) & 0xFF;
}
return buf;
}
</script>
</body>
</html>

57
dist/templates/index_bak1.html vendored Normal file
View File

@ -0,0 +1,57 @@
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Table Update Example</title>
</head>
<body>
<table id="data-table">
<thead>
<tr>
<th>时间</th><th> 姓名</th> <th> 时段 </th><th> 上线时间 </th><th> 是否排班 </th><th> 工作状态 </th><th> 全天在线时长</th> <th> 全天背单时长 </th><th> 全天完单量 </th><th> 时段内在线时长 </th><th> 时段内背单时长 </th><th>
</tr>
</thead>
<tbody>
<!-- 动态生成的数据行 -->
</tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.js"></script>
<script>
// client.js
const socket = io();
// 监听 'update_table' 事件
socket.on('update_table', function(data) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
// 获取当前时间
const now = new Date();
const timeString = now.toLocaleString(); // 或者使用其他格式化方式
// 生成新的行,并为每行添加当前时间
data['未及格成员'].forEach(function(rowData) {
const row = tableBody.insertRow();
// 添加时间列
const timeCell = row.insertCell(0); // 插入到第一列
timeCell.textContent = timeString;
// 添加其他数据列
rowData.forEach(function(cellData) {
const cell = row.insertCell();
cell.textContent = cellData;
});
})
});
// 连接事件
socket.on('connect', function() {
console.log('Connected to server');
});
</script>
</body>
</html>

109
dist/templates/index_bak2.html vendored Normal file
View File

@ -0,0 +1,109 @@
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Table Update Example</title>
</head>
<style>
/* 页面样式 */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
/* 表格样式 */
#data-table {
width: 95%; /* 减少一些边距 */
border-collapse: collapse;
border: 1px solid black;
margin: auto;
page-break-inside: avoid; /* 防止在表格内部分页 */
}
#data-table th,
#data-table td {
border: 1px solid black;
padding: 8px;
text-align: left;
}
#data-table th {
background-color: #f2f2f2;
}
/* 打印样式 */
@media print {
body, #data-table {
margin: 0;
}
#data-table {
width: 297mm; /* A4 paper width in landscape mode */
height: auto;
margin: 0 auto;
overflow-x: auto; /* 滚动条只在需要时出现 */
}
button {
display: none;
}
}
/* 打印按钮样式 */
button {
display: block;
margin: 1em auto;
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
}
</style>
<body>
<button onclick="window.print()">打印数据</button>
<table id="data-table">
<thead>
<tr>
<th>时间</th><th> 姓名</th> <th> 时段 </th><th> 上线时间 </th><th> 是否排班 </th><th> 工作状态 </th><th> 全天在线时长</th> <th> 全天背单时长 </th><th> 全天完单量 </th><th> 时段内在线时长 </th><th> 时段内背单时长 </th><th>
</tr>
</thead>
<tbody>
<!-- 动态生成的数据行 -->
</tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.js"></script>
<script>
// client.js
const socket = io();
// 监听 'update_table' 事件
socket.on('update_table', function(data) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
// 获取当前时间
const now = new Date();
const timeString = now.toLocaleString(); // 或者使用其他格式化方式
// 生成新的行,并为每行添加当前时间
data['未及格成员'].forEach(function(rowData) {
const row = tableBody.insertRow();
// 添加时间列
const timeCell = row.insertCell(0); // 插入到第一列
timeCell.textContent = timeString;
// 添加其他数据列
rowData.forEach(function(cellData) {
const cell = row.insertCell();
cell.textContent = cellData;
});
})
});
// 连接事件
socket.on('connect', function() {
console.log('Connected to server');
});
</script>
</body>
</html>

BIN
dist/客户端.exe vendored Normal file

Binary file not shown.

BIN
dist/服务端.exe vendored Normal file

Binary file not shown.

45
flask_websoket.py Normal file
View File

@ -0,0 +1,45 @@
import eventlet
eventlet.monkey_patch()
import configparser
import json
import os
from eventlet import wsgi
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app, async_mode='eventlet', cors_allowed_origins="*")
# 读取配置文件
config = configparser.ConfigParser()
config.read('config.ini', encoding="utf-8")
# 从配置文件中读取参数
host = config.get('web', 'host')
port = config.get('web', 'port')
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('connect')
def handle_connect():
print('Client connected')
@socketio.on('disconnect')
def handle_disconnect():
print('Client disconnected')
@socketio.on('data')
def handle_data_received(json_data):
print('data:', json.loads(json_data)) # data: {'目标时间': 120, '目标工作量': 5, '未及格成员': [['', '', '', '', '', '', '', '', '', '', '', ''], ['王正生\n176****8037', '晚高峰', '-', '否', '下班', '0分钟', '0分钟', '0', '0分钟', '0分钟', '0', '0'], ['黄昆利\n136****5164', '晚高峰', '-', '否', '下班', '0分钟', '0分钟', '0', '0分钟', '0分钟', '0', '0']]}
# 把数据以表格形式更新再html里面
emit('update_table', json.loads(json_data), broadcast=True)
# 在这里处理接收到的数据
@socketio.on('log')
def handle_data_received(json_data):
print('log:', json.dumps(json_data))
# 在这里处理接收到的数据
if __name__ == '__main__':
wsgi.server(eventlet.listen((host, int(os.environ.get('PORT', int(port))))), app)

38
flask_websoket.spec Normal file
View File

@ -0,0 +1,38 @@
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['flask_websoket.py'],
pathex=[],
binaries=[],
datas=[('templates', 'templates'), ('static', 'static')],
hiddenimports=['eventlet.hubs.epolls', 'eventlet.hubs.kqueue', 'eventlet.hubs.selects', 'engineio.async_drivers.threading'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='flask_websoket',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)

51
flask_websoket2.py Normal file
View File

@ -0,0 +1,51 @@
import eventlet
eventlet.monkey_patch()
import configparser
import json
import os
from eventlet import wsgi
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app, async_mode='eventlet', cors_allowed_origins="*")
# 读取配置文件
config = configparser.ConfigParser()
config.read('config.ini', encoding="utf-8")
# 从配置文件中读取参数
host = config.get('web', 'host')
port = config.get('web', 'port')
key = config.get('web', 'key')
@app.route('/')
def index():
return render_template('index.html')
@app.route('/cjl')
def cjl():
return render_template('cjl.html')
@app.route('/1')
def user_1():
return render_template('cjl.html')
@socketio.on('connect')
def handle_connect():
print('Client connected')
@socketio.on('disconnect')
def handle_disconnect():
print('Client disconnected')
@socketio.on(key)
def handle_data_received(json_data):
print(key,':', json.loads(json_data)) # data: {'目标时间': 120, '目标工作量': 5, '未及格成员': [['', '', '', '', '', '', '', '', '', '', '', ''], ['王正生\n176****8037', '晚高峰', '-', '否', '下班', '0分钟', '0分钟', '0', '0分钟', '0分钟', '0', '0'], ['黄昆利\n136****5164', '晚高峰', '-', '否', '下班', '0分钟', '0分钟', '0', '0分钟', '0分钟', '0', '0']]}
# 把数据以表格形式更新再html里面
emit('update_table_'+key, json.loads(json_data), broadcast=True)
# 在这里处理接收到的数据
@socketio.on('log_'+key)
def handle_data_received(json_data):
print('log:', json.dumps(json_data))
# 在这里处理接收到的数据
if __name__ == '__main__':
wsgi.server(eventlet.listen((host, int(os.environ.get('PORT', int(port))))), app)

View File

@ -1,3 +1,6 @@
Flask==3.0.3
Flask_SocketIO==5.3.6
python-socketio==5.11.3
selenium==4.23.0
webdriver_manager==4.0.1
websocket_client==1.8.0

View File

@ -33,6 +33,7 @@ interval = int(config.get('base', 'interval'))
driver_type = config.get('base', 'driver')
driver_path_edge = config.get('base', 'driver_path_edge')
driver_path_chrome = config.get('base', 'driver_path_chrome')
# WebDriver初始化
def init_webdriver(driver_type):
options = Options()

View File

@ -1,8 +1,13 @@
import configparser
import json
import logging
import os
import re
from datetime import datetime
from time import sleep
import socketio
import websocket
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
@ -33,6 +38,30 @@ interval = int(config.get('base', 'interval'))
driver_type = config.get('base', 'driver')
driver_path_edge = config.get('base', 'driver_path_edge')
driver_path_chrome = config.get('base', 'driver_path_chrome')
WEBSOCKET_URL = config.get('WebSocket', 'WEBSOCKET_URL')
key = config.get('web', 'key')
# 创建一个 Socket.IO 客户端实例
sio = socketio.Client()
# 定义连接事件处理器
@sio.event
def connect():
print('Connected to server')
# 定义断开连接事件处理器
@sio.event
def disconnect():
print('Disconnected from server')
# 定义接收服务器消息的事件处理器
@sio.on('message')
def on_message(data):
print('Received message:', data)
# 从配置文件中读取参数
host = config.get('WebSocket', 'host')
port = config.get('WebSocket', 'port')
# 连接到服务器
sio.connect("ws://"+host+":"+port)
# WebDriver初始化
def init_webdriver(driver_type):
options = Options()
@ -98,15 +127,30 @@ def login(driver, url_login, account, password):
logging.info("登录成功!")
# 将在线时长转换为分钟
def parse_online_time(online_time_str):
match = re.match(r'(\d*)小时(\d*)分钟', online_time_str)
if match:
hours, minutes = match.groups()
hours = int(hours) if hours else 0
minutes = int(minutes) if minutes else 0
return hours * 60 + minutes
# 如果字符串中同时包含小时和分钟
if "小时" in online_time_str and "分钟" in online_time_str:
match = re.search(r'(\d+)小时(\d+)分钟', online_time_str)
if match:
hours, minutes = match.groups()
return int(hours) * 60 + int(minutes)
# 如果字符串中只包含小时
elif "小时" in online_time_str:
match = re.search(r'(\d+)小时', online_time_str)
if match:
hours = match.group(1)
return int(hours) * 60
# 如果字符串中只包含分钟
elif "分钟" in online_time_str:
match = re.search(r'(\d+)分钟', online_time_str)
if match:
minutes = match.group(1)
return int(minutes)
# 如果字符串中既不包含小时也不包含分钟则返回0
else:
# 如果字符串不匹配任何时间格式,假设它是以分钟表示的
return int(online_time_str) if online_time_str.isdigit() else 0
return 0
# 主要逻辑
def main():
driver = init_webdriver(driver_type)
@ -117,119 +161,176 @@ def main():
logging.info("驱动初始化完毕")
driver.get(url_base) # 开始进入网页
try:
while driver.window_handles:
if driver.current_url == url_login:
sleep(3)
# 填写手机号码
username_field = driver.find_element(By.NAME, 'domainAccount')
username_field.clear()
username_field.send_keys(account)
# 填写密码
password_field = driver.find_element(By.NAME, 'password')
password_field.clear()
password_field.send_keys(password)
while True:
if driver.current_url == url_login:
sleep(3)
# 填写手机号码
username_field = driver.find_element(By.NAME, 'domainAccount')
username_field.clear()
username_field.send_keys(account)
# 填写密码
password_field = driver.find_element(By.NAME, 'password')
password_field.clear()
password_field.send_keys(password)
# 使用WebDriverWait等待登录按钮变为可点击状态
login_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CLASS_NAME, 'sso-btn-submit'))
)
login_button.click()
logging.info("登录完成")
# 等待一段时间,确保登录过程完成
sleep(3)
if driver.current_url == url_home:
logging.info("已经进入后台主页")
sleep(1) # 等待加载,跳转到工作目录
driver.get(url_work)
sleep(1) # 等待加载,跳转到工作目录
logging.info("已经跳转到工作页面;"+driver.current_url)
if driver.current_url == url_work:
# 使用WebDriverWait等待登录按钮变为可点击状态
login_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CLASS_NAME, 'sso-btn-submit'))
)
login_button.click()
logging.info("登录完成")
# 等待一段时间,确保登录过程完成
sleep(3)
if driver.current_url == url_home:
logging.info("已经进入后台主页")
sleep(1) # 等待加载,跳转到工作目录
driver.get(url_work)
sleep(1) # 等待加载,跳转到工作目录
logging.info("已经跳转到工作页面;"+driver.current_url)
if driver.current_url == url_work:
sleep(3)
logging.info("开始提取数据")
# 任务1: 提取目标在线时长和目标完单量
logging.info("任务1提取目标在线时长和目标完单量")
target_info_element = driver.find_element(By.XPATH,
'//*[@id="root"]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[1]/div/div[1]/div/div/div[2]/span')
target_info_text = target_info_element.text
logging.info(target_info_text)
target_online_time = int(re.search(r'(\d+)小时(\d+)分钟', target_info_text).group(1)) * 60 + int(
re.search(r'(\d+)小时(\d+)分钟', target_info_text).group(2))
logging.info("目标时间min"+str(target_online_time))
target_order_completion = int(re.search(r'目标完单量:(\d+)', target_info_text).group(1))
logging.info("目标单量:"+str(target_order_completion))
# 任务2: 提取表格数据并确定目标列的索引
logging.info("任务2提取表格数据并确定目标列的索引")
headers =[]
for i in range(1, 13): # 假设有12列
logging.info("开始查找表头:"+str(i))
# 使用字符串格式化构建XPath表达式
xpath_expression = f'//*[@id="root"]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[1]/table/thead/tr/th[{i}]/div'
# 使用XPath表达式查找元素
header_element = driver.find_element(By.XPATH, xpath_expression)
if header_element.text=="" or header_element.text==None:
logging.error("方法1 失败")
xpath_expression = f'//*[@id="root"]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[1]/table/thead/tr/th[{i}]/div/span[1]'
header_element = driver.find_element(By.XPATH, xpath_expression)
# if header_element.text=="" or header_element.text==None:
# logging.error("方法2 失败")
# xpath_expression = f'//*[@id="root"]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[1]/table/thead/tr/th[{i}]/div/span[1]/div/div'
# header_element = driver.find_element(By.XPATH, xpath_expression)
if header_element.text=="" or header_element.text==None:
logging.error("方法3 失败")
xpath_expression = f'/html/body/div[1]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[1]/table/thead/tr/th[{i}]/div/span[1]'
header_element = driver.find_element(By.XPATH, xpath_expression)
if header_element.text == "" or header_element.text == None:
logging.error("方法4 失败")
logging.error("依旧没有找到内容"+str(i))
logging.error("开始手动补齐")
if i ==8:
headers.append("全天完单量")
elif i==9:
headers.append("时段内在线时长")
elif i == 10:
headers.append("时段内背单时长")
elif i == 11:
headers.append("时段内完单量")
elif i == 12:
headers.append("配送中单量")
sleep(3)
logging.info("开始提取数据")
# 任务1: 提取目标在线时长和目标完单量
logging.info("任务1提取目标在线时长和目标完单量")
target_info_element = driver.find_element(By.XPATH,
'//*[@id="root"]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[1]/div/div[1]/div/div/div[2]/span')
target_info_text = target_info_element.text
logging.info(target_info_text)
# target_online_time = int(re.search(r'(\d+)小时(\d+)分钟', target_info_text).group(1)) * 60 + int(
# re.search(r'(\d+)小时(\d+)分钟', target_info_text).group(2))
#
match = re.search(r'(?P<hours>\d+)?小时?(?P<minutes>\d+)?分钟?', target_info_text)
if match:
target_online_time = int(match.group(1)) * 60 + int(match.group(2))
else:
logging.error(str(i)+" : "+str(header_element.text))
headers.append(header_element.text.replace(" ",""))
header_to_index = {header: index for index, header in enumerate(headers)}
online_time_header = "全天在线时长"
order_completion_header = "全天完单量"
logging.info("获取表头如下:")
logging.info(headers)
# 任务3: 根据表格数据和目标值,筛选出不合格的人
logging.info("任务3根据表格数据和目标值筛选出不合格的人")
unqualified_persons = []
rows = driver.find_elements(By.XPATH, '//tbody/tr')
for row in rows:
cells = row.find_elements(By.TAG_NAME, 'td')
row_data = [cell.text for cell in cells]
name = row_data[header_to_index["姓名"]]
online_time = row_data[header_to_index[online_time_header]]
order_completion = row_data[header_to_index[order_completion_header]]
# 将在线时长转换为分钟
total_online_time = parse_online_time(online_time)
# 比较在线时长和完单量
if total_online_time < target_online_time or int(order_completion) < target_order_completion:
unqualified_persons.append(name)
logging.info(
f"目标在线时长: {target_online_time // 60}小时{target_online_time % 60}分钟, 目标完单量: {target_order_completion}")
logging.info("不合格人员名单:", unqualified_persons)
logging.info("准备工作……休息中……请等待休息完毕……")
sleep(interval)
logging.error("无法从文本中提取目标在线时长信息")
sleep(2)
try:
match = re.search(r'(\S*)', target_info_text.replace(" ",""))
if match:
extracted_text = match.group(1)
target_online_time =parse_online_time(extracted_text)
else:
target_online_time=0
except Exception as e:
logging.error(e)
continue
logging.info("目标时间min"+str(target_online_time))
target_order_completion = int(re.search(r'目标完单量:(\d+)', target_info_text).group(1))
logging.info("目标单量:"+str(target_order_completion))
# 任务2: 提取表格数据并确定目标列的索引
logging.info("任务2提取表格数据并确定目标列的索引")
headers =[]
for i in range(1, 13): # 假设有12列
logging.info("开始查找表头:"+str(i))
# 使用字符串格式化构建XPath表达式
xpath_expression = f'//*[@id="root"]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[1]/table/thead/tr/th[{i}]/div'
# 使用XPath表达式查找元素
header_element = driver.find_element(By.XPATH, xpath_expression)
if header_element.text=="" or header_element.text==None:
logging.error("方法1 失败")
xpath_expression = f'//*[@id="root"]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[1]/table/thead/tr/th[{i}]/div/span[1]'
header_element = driver.find_element(By.XPATH, xpath_expression)
# if header_element.text=="" or header_element.text==None:
# logging.error("方法2 失败")
# xpath_expression = f'//*[@id="root"]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[1]/table/thead/tr/th[{i}]/div/span[1]/div/div'
# header_element = driver.find_element(By.XPATH, xpath_expression)
if header_element.text=="" or header_element.text==None:
logging.error("方法3 失败")
xpath_expression = f'/html/body/div[1]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[1]/table/thead/tr/th[{i}]/div/span[1]'
header_element = driver.find_element(By.XPATH, xpath_expression)
if header_element.text == "" or header_element.text == None:
logging.error("方法4 失败")
logging.error("依旧没有找到内容"+str(i))
logging.error("开始手动补齐")
if i ==8:
headers.append("全天完单量")
elif i==9:
headers.append("时段内在线时长")
elif i == 10:
headers.append("时段内背单时长")
elif i == 11:
headers.append("时段内完单量")
elif i == 12:
headers.append("配送中单量")
else:
logging.error(str(i)+" : "+str(header_element.text))
headers.append(header_element.text.replace(" ",""))
header_to_index = {header: index for index, header in enumerate(headers)}
online_time_header = "全天在线时长"
order_completion_header = "全天完单量"
logging.info("获取表头如下:")
logging.info(headers)
# 任务3: 根据表格数据和目标值,筛选出不合格的人
logging.info("任务3根据表格数据和目标值筛选出不合格的人")
unqualified_persons = []
rows = driver.find_elements(By.XPATH, '//tbody/tr')
for row in rows:
cells = row.find_elements(By.TAG_NAME, 'td')
row_data = [cell.text for cell in cells]
name = row_data[header_to_index["姓名"]]
online_time = row_data[header_to_index[online_time_header]]
order_completion = row_data[header_to_index[order_completion_header]]
# 将在线时长转换为分钟
total_online_time = parse_online_time(online_time)
# 比较在线时长和完单量
if total_online_time < target_online_time or int(order_completion) < target_order_completion:
unqualified_persons.append(row_data)
# logging.info(
# f"目标在线时长: {target_online_time // 60}小时{target_online_time % 60}分钟, 目标完单量: {target_order_completion}")
# # logging.info("不合格人员名单:", unqualified_persons)
# 发送数据到WebSocket
data_to_send = {
"目标时间": target_online_time,
"目标工作量": target_order_completion,
"未及格成员": unqualified_persons
}
sio.emit("data", json.dumps(data_to_send))
logging.info("准备工作……休息中……请等待休息完毕……")
driver.get(url_home) # 返回主页 避免登录失效
sleep(interval)
except Exception as e:
# 捕获异常比如网络问题或其他Selenium错误
print(f"An exception occurred: {e}")
sio.emit("log", {"err":"网络错误"})
finally:
sio.emit("log", {"info":"关闭连接"})
sio.disconnect()
# 确保在退出前关闭浏览器
driver.quit()
if __name__ == '__main__':
main()
# 获取当前日期
today = datetime.now().date()
# 计算今年的8月10日
this_years_cutoff = datetime(today.year, 8, 10).date()
# 检查今天是否超过了截止日期
if today > this_years_cutoff:
print("软件已到期,请联系供应商更新许可证。")
else:
# 计算距离到期的天数
days_until_expiration = (this_years_cutoff - today).days
# 日志信息
logging.info(f"软件距离到期还有{days_until_expiration}")
data_to_send = {"info": "开始连接"}
sio.emit('log', data_to_send)
main()

38
run_window_v3.spec Normal file
View File

@ -0,0 +1,38 @@
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['run_window_v3.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='run_window_v3',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)

336
run_window_v4.py Normal file
View File

@ -0,0 +1,336 @@
import configparser
import json
import logging
import os
import re
from datetime import datetime
from time import sleep
import socketio
import websocket
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.microsoft import EdgeChromiumDriverManager
from webdriver_manager.firefox import GeckoDriverManager
import ssl
os.environ['WDM_SSL_VERIFY'] = "false"
# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# 读取配置文件
config = configparser.ConfigParser()
config.read('config.ini', encoding="utf-8")
# 从配置文件中读取参数
url_base = config.get('base', 'url_base')
url_login = r"https://mozi-login.alibaba-inc.com/?APP_NAME=LPD_TEAM_AEOLUS&BACK_URL=https%3A%2F%2Faeolus.ele.me"
url_home = config.get('base', 'url_home')
url_work = config.get('base', 'url_work')
account = config.get('base', 'account')
password = config.get('base', 'password')
interval = int(config.get('base', 'interval'))
driver_type = config.get('base', 'driver')
driver_path_edge = config.get('base', 'driver_path_edge')
driver_path_chrome = config.get('base', 'driver_path_chrome')
WEBSOCKET_URL = config.get('WebSocket', 'WEBSOCKET_URL')
key = config.get('web', 'key')
# 创建一个 Socket.IO 客户端实例
sio = socketio.Client()
# 定义连接事件处理器
@sio.event
def connect():
print('Connected to server')
# 定义断开连接事件处理器
@sio.event
def disconnect():
print('Disconnected from server')
# 定义接收服务器消息的事件处理器
@sio.on('message')
def on_message(data):
print('Received message:', data)
# 从配置文件中读取参数
host = config.get('WebSocket', 'host')
port = config.get('WebSocket', 'port')
# 连接到服务器
sio.connect("ws://"+host+":"+port)
# WebDriver初始化
def init_webdriver(driver_type):
options = Options()
manager = {
"firefox": GeckoDriverManager,
"edge": EdgeChromiumDriverManager,
"chrome": ChromeDriverManager
}[driver_type.lower()]
driver_path = None # 初始化为None以防安装失败
try:
driver_path = manager().install()
logging.info("找到驱动" + driver_path)
service = Service(executable_path=driver_path)
if driver_type.lower() == "firefox":
oprofile = webdriver.FirefoxOptions()
oprofile.accept_insecure_certs = True
driver = webdriver.Firefox(service=service, options=oprofile)
elif driver_type.lower() == "edge":
driver = webdriver.Edge(service=service, options=options)
else: # chrome
options.add_argument('--ignore-certificate-errors')
driver = webdriver.Chrome(service=service, options=options)
logging.info(f"成功 - 使用{driver_type}")
return driver
except Exception as e:
logging.error(f"无法创建WebDriver实例: {e}")
if driver_type.lower() == "edge" and driver_path_edge: # 只有在Edge类型且路径已知的情况下才尝试使用已存在的驱动
edge_options = Options() # 创建Edge的Options实例
service = Service(executable_path=driver_path_edge) # 使用已知的驱动路径
driver = webdriver.Edge(service=service, options=edge_options) # 传入Options实例
logging.info("使用自行安装的Edge")
return driver
else:
edge_options = Options() # 创建Edge的Options实例
service = Service(executable_path=driver_path_chrome) # 使用已知的驱动路径
driver = webdriver.Edge(service=service, options=edge_options) # 传入Options实例
logging.info("使用自行安装的Chrome")
return driver
# 登录流程
def login(driver, url_login, account, password):
driver.get(url_login)
WebDriverWait(driver, 10).until(EC.url_to_be(url_login))
username_field = driver.find_element(By.NAME, 'domainAccount')
username_field.clear()
username_field.send_keys(account)
password_field = driver.find_element(By.NAME, 'password')
password_field.clear()
password_field.send_keys(password)
login_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CLASS_NAME, 'sso-btn-submit'))
)
login_button.click()
WebDriverWait(driver, 10).until_not(EC.url_to_be(url_login))
logging.info("登录成功!")
# 将在线时长转换为分钟
def parse_online_time(online_time_str):
# 如果字符串中同时包含小时和分钟
if "小时" in online_time_str and "分钟" in online_time_str:
match = re.search(r'(\d+)小时(\d+)分钟', online_time_str)
if match:
hours, minutes = match.groups()
return int(hours) * 60 + int(minutes)
# 如果字符串中只包含小时
elif "小时" in online_time_str:
match = re.search(r'(\d+)小时', online_time_str)
if match:
hours = match.group(1)
return int(hours) * 60
# 如果字符串中只包含分钟
elif "分钟" in online_time_str:
match = re.search(r'(\d+)分钟', online_time_str)
if match:
minutes = match.group(1)
return int(minutes)
# 如果字符串中既不包含小时也不包含分钟则返回0
else:
return 0
# 主要逻辑
def main():
driver = init_webdriver(driver_type)
if driver is None:
logging.error("驱动初始化失败")
return "驱动异常"
else:
logging.info("驱动初始化完毕")
driver.get(url_base) # 开始进入网页
try:
while driver.window_handles:
if driver.current_url == url_login:
sleep(3)
# 填写手机号码
username_field = driver.find_element(By.NAME, 'domainAccount')
username_field.clear()
username_field.send_keys(account)
# 填写密码
password_field = driver.find_element(By.NAME, 'password')
password_field.clear()
password_field.send_keys(password)
# 使用WebDriverWait等待登录按钮变为可点击状态
login_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CLASS_NAME, 'sso-btn-submit'))
)
login_button.click()
logging.info("登录完成")
# 等待一段时间,确保登录过程完成
sleep(3)
if driver.current_url == url_home:
logging.info("已经进入后台主页")
sleep(1) # 等待加载,跳转到工作目录
driver.get(url_work)
sleep(1) # 等待加载,跳转到工作目录
logging.info("已经跳转到工作页面;"+driver.current_url)
if driver.current_url == url_work:
sleep(3)
logging.info("开始提取数据")
# 任务1: 提取目标在线时长和目标完单量
logging.info("任务1提取目标在线时长和目标完单量")
target_info_element = driver.find_element(By.XPATH,
'//*[@id="root"]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[1]/div/div[1]/div/div/div[2]/span')
target_info_text = target_info_element.text
logging.info(target_info_text)
# target_online_time = int(re.search(r'(\d+)小时(\d+)分钟', target_info_text).group(1)) * 60 + int(
# re.search(r'(\d+)小时(\d+)分钟', target_info_text).group(2))
#
match = re.search(r'(?P<hours>\d+)?小时?(?P<minutes>\d+)?分钟?', target_info_text)
if match:
target_online_time = int(match.group(1)) * 60 + int(match.group(2))
else:
logging.error("无法从文本中提取目标在线时长信息")
sleep(2)
try:
match = re.search(r'(\S*)', target_info_text.replace(" ",""))
if match:
extracted_text = match.group(1)
target_online_time =parse_online_time(extracted_text)
else:
target_online_time=0
except Exception as e:
logging.error(e)
continue
logging.info("目标时间min"+str(target_online_time))
target_order_completion = int(re.search(r'目标完单量:(\d+)', target_info_text).group(1))
logging.info("目标单量:"+str(target_order_completion))
# 任务2: 提取表格数据并确定目标列的索引
logging.info("任务2提取表格数据并确定目标列的索引")
headers =[]
for i in range(1, 13): # 假设有12列
logging.info("开始查找表头:"+str(i))
# 使用字符串格式化构建XPath表达式
xpath_expression = f'//*[@id="root"]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[1]/table/thead/tr/th[{i}]/div'
# 使用XPath表达式查找元素
header_element = driver.find_element(By.XPATH, xpath_expression)
if header_element.text=="" or header_element.text==None:
logging.error("方法1 失败")
xpath_expression = f'//*[@id="root"]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[1]/table/thead/tr/th[{i}]/div/span[1]'
header_element = driver.find_element(By.XPATH, xpath_expression)
# if header_element.text=="" or header_element.text==None:
# logging.error("方法2 失败")
# xpath_expression = f'//*[@id="root"]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[1]/table/thead/tr/th[{i}]/div/span[1]/div/div'
# header_element = driver.find_element(By.XPATH, xpath_expression)
if header_element.text=="" or header_element.text==None:
logging.error("方法3 失败")
xpath_expression = f'/html/body/div[1]/div/div/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[1]/table/thead/tr/th[{i}]/div/span[1]'
header_element = driver.find_element(By.XPATH, xpath_expression)
if header_element.text == "" or header_element.text == None:
logging.error("方法4 失败")
logging.error("依旧没有找到内容"+str(i))
logging.error("开始手动补齐")
if i ==8:
headers.append("全天完单量")
elif i==9:
headers.append("时段内在线时长")
elif i == 10:
headers.append("时段内背单时长")
elif i == 11:
headers.append("时段内完单量")
elif i == 12:
headers.append("配送中单量")
else:
logging.error(str(i)+" : "+str(header_element.text))
headers.append(header_element.text.replace(" ",""))
header_to_index = {header: index for index, header in enumerate(headers)}
online_time_header = "全天在线时长"
order_completion_header = "全天完单量"
logging.info("获取表头如下:")
logging.info(headers)
# 任务3: 根据表格数据和目标值,筛选出不合格的人
logging.info("任务3根据表格数据和目标值筛选出不合格的人")
unqualified_persons = []
rows = driver.find_elements(By.XPATH, '//tbody/tr')
for row in rows:
cells = row.find_elements(By.TAG_NAME, 'td')
row_data = [cell.text for cell in cells]
name = row_data[header_to_index["姓名"]]
online_time = row_data[header_to_index[online_time_header]]
order_completion = row_data[header_to_index[order_completion_header]]
# 将在线时长转换为分钟
total_online_time = parse_online_time(online_time)
# 比较在线时长和完单量
if total_online_time < target_online_time or int(order_completion) < target_order_completion:
unqualified_persons.append(row_data)
# logging.info(
# f"目标在线时长: {target_online_time // 60}小时{target_online_time % 60}分钟, 目标完单量: {target_order_completion}")
# # logging.info("不合格人员名单:", unqualified_persons)
# 发送数据到WebSocket
data_to_send = {
"目标时间": target_online_time,
"目标工作量": target_order_completion,
"未及格成员": unqualified_persons
}
sio.emit(key, json.dumps(data_to_send))
logging.info("准备工作……休息中……请等待休息完毕……")
driver.get(url_home) # 返回主页 避免登录失效
sleep(interval)
except Exception as e:
# 捕获异常比如网络问题或其他Selenium错误
print(f"An exception occurred: {e}")
sio.emit("log_"+key, {"err":"网络错误"})
finally:
sio.emit("log_"+key, {"info":"关闭连接"})
sio.disconnect()
# 确保在退出前关闭浏览器
driver.quit()
if __name__ == '__main__':
# 获取当前日期
today = datetime.now().date()
# 计算今年的8月10日
this_years_cutoff = datetime(today.year, 8, 10).date()
# 检查今天是否超过了截止日期
if today > this_years_cutoff:
print("软件已到期,请联系供应商更新许可证。")
else:
# 计算距离到期的天数
days_until_expiration = (this_years_cutoff - today).days
# 日志信息
logging.info(f"软件距离到期还有{days_until_expiration}")
data_to_send = {"info": "开始连接"}
sio.emit('log_'+key, data_to_send)
main()

Binary file not shown.

217
templates/cjl.html Normal file
View File

@ -0,0 +1,217 @@
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Table Update Example</title>
<!-- 引入 xlsx 库 -->
<script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
</head>
<style>
/* 页面样式 */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
/* 表格样式 */
#data-table {
width: 95%; /* 减少一些边距 */
border-collapse: collapse;
border: 1px solid black;
margin: auto;
page-break-inside: avoid; /* 防止在表格内部分页 */
}
#data-table th,
#data-table td {
border: 1px solid black;
padding: 8px;
text-align: left;
}
#data-table th {
background-color: #f2f2f2;
}
/* 打印样式 */
@media print {
body, #data-table {
margin: 0;
}
#data-table {
width: 297mm; /* A4 paper width in landscape mode */
height: auto;
margin: 0 auto;
overflow-x: auto; /* 滚动条只在需要时出现 */
}
button {
display: none;
}
}
/* 打印按钮样式 */
button {
display: block;
margin: 1em auto;
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
}
</style>
<body>
<button onclick="window.print()">打印数据</button>
<!-- 添加一个导出按钮 -->
<button onclick="exportToExcel()">导出到Excel</button>
<!-- 添加一个清空缓存的按钮 -->
<button onclick="clearLocalStorage()">清空缓存</button>
<select id="scheduleFilter" onchange="filterTable()">
<option value="">全部</option>
<option value="是"></option>
<option value="否"></option>
</select>
<table id="data-table">
<thead>
<tr>
<th>时间</th><th> 姓名</th> <th> 时段 </th><th> 上线时间 </th><th> 是否排班 </th><th> 工作状态 </th><th> 全天在线时长</th> <th> 全天背单时长 </th><th> 全天完单量 </th><th> 时段内在线时长 </th><th> 时段内背单时长 </th><th>
</tr>
</thead>
<tbody>
<!-- 动态生成的数据行 -->
</tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.js"></script>
<script>
const socket = io();
let allRows = [];
window.addEventListener('load', () => {
const storedAllRows = JSON.parse(localStorage.getItem('allRows'));
const storedScheduleFilter = localStorage.getItem('scheduleFilter');
if (storedAllRows && storedAllRows.length > 0) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
// 清空现有的表格行,防止重复加载
while (tableBody.firstChild) {
tableBody.removeChild(tableBody.firstChild);
}
// 将存储的行数据插入到表格中
storedAllRows.forEach(rowData => {
const row = tableBody.insertRow();
// 假设rowData是一个数组其中包含每个单元格的内容
rowData.forEach(cellData => {
const cell = row.insertCell();
cell.textContent = cellData;
});
});
}
if (storedScheduleFilter) {
document.getElementById('scheduleFilter').value = storedScheduleFilter;
filterTable(); // 调用筛选函数应用筛选条件
}
});
socket.on('update_table_5F3EEC36FB021AF31011F2B448AFC064', function(data) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
// 清空现有的数据行
//while (tableBody.firstChild) {
// tableBody.removeChild(tableBody.firstChild);
// }
// 清空allRows数组准备接受新数据
//allRows = [];
const now = new Date();
// 保存原始行数据并生成新的行
data['未及格成员'].forEach(function(rowData) {
const row = tableBody.insertRow();
allRows.push(row); // 添加新行到allRows数组
// 添加时间列
const timeCell = row.insertCell(0); // 插入到第一列
timeCell.textContent = now.toLocaleString();
// 添加其他数据列
rowData.forEach(function(cellData) {
const cell = row.insertCell();
cell.textContent = cellData;
});
});
// 更新存储在localStorage中的所有行数据
localStorage.setItem('allRows', JSON.stringify(allRows.map(row => Array.from(row.cells).map(cell => cell.textContent))));
});
// 连接事件
socket.on('connect', function() {
console.log('Connected to server');
});
function filterTable() {
const selectElement = document.getElementById('scheduleFilter');
const selectedValue = selectElement.value;
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
const rows = Array.from(tableBody.getElementsByTagName('tr'));
rows.forEach(row => {
const isScheduledCell = row.cells[4]; // 假定“是否排班”是第5列
if (selectedValue === '' || isScheduledCell.textContent === selectedValue) {
row.style.display = '';
} else {
row.style.display = 'none';
}
});
}
// 导出到Excel的函数
function exportToExcel() {
// 获取表格
var table = document.getElementById('data-table');
// 创建工作表
var ws = XLSX.utils.table_to_sheet(table);
// 创建工作簿
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
// 将工作簿输出为二进制格式
var wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
// 将二进制数据转换为Blob对象
var blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' });
// 创建下载链接
var link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = 'exported_data.xlsx';
link.click();
}
// 辅助函数用于将二进制字符串转换为ArrayBuffer
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i=0; i<s.length; i++) {
view[i] = s.charCodeAt(i) & 0xFF;
}
return buf;
}
// 清除本地缓存的函数
function clearLocalStorage() {
localStorage.removeItem('allRows');
localStorage.removeItem('scheduleFilter');
location.reload(); // 刷新页面以重新加载初始状态
}
</script>
</body>
</html>

1
templates/index.html Normal file
View File

@ -0,0 +1 @@
测试产品

57
templates/index_bak1.html Normal file
View File

@ -0,0 +1,57 @@
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Table Update Example</title>
</head>
<body>
<table id="data-table">
<thead>
<tr>
<th>时间</th><th> 姓名</th> <th> 时段 </th><th> 上线时间 </th><th> 是否排班 </th><th> 工作状态 </th><th> 全天在线时长</th> <th> 全天背单时长 </th><th> 全天完单量 </th><th> 时段内在线时长 </th><th> 时段内背单时长 </th><th>
</tr>
</thead>
<tbody>
<!-- 动态生成的数据行 -->
</tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.js"></script>
<script>
// client.js
const socket = io();
// 监听 'update_table' 事件
socket.on('update_table', function(data) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
// 获取当前时间
const now = new Date();
const timeString = now.toLocaleString(); // 或者使用其他格式化方式
// 生成新的行,并为每行添加当前时间
data['未及格成员'].forEach(function(rowData) {
const row = tableBody.insertRow();
// 添加时间列
const timeCell = row.insertCell(0); // 插入到第一列
timeCell.textContent = timeString;
// 添加其他数据列
rowData.forEach(function(cellData) {
const cell = row.insertCell();
cell.textContent = cellData;
});
})
});
// 连接事件
socket.on('connect', function() {
console.log('Connected to server');
});
</script>
</body>
</html>

109
templates/index_bak2.html Normal file
View File

@ -0,0 +1,109 @@
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Table Update Example</title>
</head>
<style>
/* 页面样式 */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
/* 表格样式 */
#data-table {
width: 95%; /* 减少一些边距 */
border-collapse: collapse;
border: 1px solid black;
margin: auto;
page-break-inside: avoid; /* 防止在表格内部分页 */
}
#data-table th,
#data-table td {
border: 1px solid black;
padding: 8px;
text-align: left;
}
#data-table th {
background-color: #f2f2f2;
}
/* 打印样式 */
@media print {
body, #data-table {
margin: 0;
}
#data-table {
width: 297mm; /* A4 paper width in landscape mode */
height: auto;
margin: 0 auto;
overflow-x: auto; /* 滚动条只在需要时出现 */
}
button {
display: none;
}
}
/* 打印按钮样式 */
button {
display: block;
margin: 1em auto;
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
}
</style>
<body>
<button onclick="window.print()">打印数据</button>
<table id="data-table">
<thead>
<tr>
<th>时间</th><th> 姓名</th> <th> 时段 </th><th> 上线时间 </th><th> 是否排班 </th><th> 工作状态 </th><th> 全天在线时长</th> <th> 全天背单时长 </th><th> 全天完单量 </th><th> 时段内在线时长 </th><th> 时段内背单时长 </th><th>
</tr>
</thead>
<tbody>
<!-- 动态生成的数据行 -->
</tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.js"></script>
<script>
// client.js
const socket = io();
// 监听 'update_table' 事件
socket.on('update_table', function(data) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
// 获取当前时间
const now = new Date();
const timeString = now.toLocaleString(); // 或者使用其他格式化方式
// 生成新的行,并为每行添加当前时间
data['未及格成员'].forEach(function(rowData) {
const row = tableBody.insertRow();
// 添加时间列
const timeCell = row.insertCell(0); // 插入到第一列
timeCell.textContent = timeString;
// 添加其他数据列
rowData.forEach(function(cellData) {
const cell = row.insertCell();
cell.textContent = cellData;
});
})
});
// 连接事件
socket.on('connect', function() {
console.log('Connected to server');
});
</script>
</body>
</html>

199
templates/index_bak3.html Normal file
View File

@ -0,0 +1,199 @@
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Table Update Example</title>
<!-- 引入 xlsx 库 -->
<script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
</head>
<style>
/* 页面样式 */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
/* 表格样式 */
#data-table {
width: 95%; /* 减少一些边距 */
border-collapse: collapse;
border: 1px solid black;
margin: auto;
page-break-inside: avoid; /* 防止在表格内部分页 */
}
#data-table th,
#data-table td {
border: 1px solid black;
padding: 8px;
text-align: left;
}
#data-table th {
background-color: #f2f2f2;
}
/* 打印样式 */
@media print {
body, #data-table {
margin: 0;
}
#data-table {
width: 297mm; /* A4 paper width in landscape mode */
height: auto;
margin: 0 auto;
overflow-x: auto; /* 滚动条只在需要时出现 */
}
button {
display: none;
}
}
/* 打印按钮样式 */
button {
display: block;
margin: 1em auto;
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
}
</style>
<body>
<button onclick="window.print()">打印数据</button>
<!-- 添加一个导出按钮 -->
<button onclick="exportToExcel()">导出到Excel</button>
<select id="scheduleFilter" onchange="filterTable()">
<option value="">全部</option>
<option value="是"></option>
<option value="否"></option>
</select>
<table id="data-table">
<thead>
<tr>
<th>时间</th><th> 姓名</th> <th> 时段 </th><th> 上线时间 </th><th> 是否排班 </th><th> 工作状态 </th><th> 全天在线时长</th> <th> 全天背单时长 </th><th> 全天完单量 </th><th> 时段内在线时长 </th><th> 时段内背单时长 </th><th>
</tr>
</thead>
<tbody>
<!-- 动态生成的数据行 -->
</tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.js"></script>
<script>
const socket = io();
let allRows = [];
// 监听 'update_table' 事件
socket.on('update_table', function(data) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
tableBody.innerHTML = ''; // 清空现有行
// 获取当前时间
const now = new Date();
const timeString = now.toLocaleString();
// 保存原始行数据并生成新的行
allRows = [];
data['未及格成员'].forEach(function(rowData) {
const row = tableBody.insertRow();
allRows.push(row); // 保存行
// 添加时间列
const timeCell = row.insertCell(0); // 插入到第一列
timeCell.textContent = timeString;
// 添加其他数据列
rowData.forEach(function(cellData) {
const cell = row.insertCell();
cell.textContent = cellData;
});
});
// 存储数据到localStorage
localStorage.setItem('allRows', JSON.stringify(allRows));
localStorage.setItem('scheduleFilter', ''); // 默认筛选值
});
// 加载时检查localStorage中的数据
window.addEventListener('load', () => {
const storedAllRows = JSON.parse(localStorage.getItem('allRows'));
const storedScheduleFilter = localStorage.getItem('scheduleFilter');
if (storedAllRows && storedAllRows.length > 0) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
tableBody.innerHTML = ''; // 清空现有行
storedAllRows.forEach(rowData => {
const row = tableBody.insertRow();
rowData.forEach(cellData => {
const cell = row.insertCell();
cell.textContent = cellData;
});
});
}
if (storedScheduleFilter) {
document.getElementById('scheduleFilter').value = storedScheduleFilter;
filterTable();
}
});
// 连接事件
socket.on('connect', function() {
console.log('Connected to server');
});
// 筛选表格函数
function filterTable() {
const selectElement = document.getElementById('scheduleFilter');
const selectedValue = selectElement.value;
allRows.forEach(row => {
const isScheduledCell = row.cells[4]; // 假定“是否排班”是第5列
if (selectedValue === '' || isScheduledCell.textContent === selectedValue) {
row.style.display = '';
} else {
row.style.display = 'none';
}
});
}
// 导出到Excel的函数
function exportToExcel() {
// 获取表格
var table = document.getElementById('data-table');
// 创建工作表
var ws = XLSX.utils.table_to_sheet(table);
// 创建工作簿
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
// 将工作簿输出为二进制格式
var wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
// 将二进制数据转换为Blob对象
var blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' });
// 创建下载链接
var link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = 'exported_data.xlsx';
link.click();
}
// 辅助函数用于将二进制字符串转换为ArrayBuffer
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i=0; i<s.length; i++) {
view[i] = s.charCodeAt(i) & 0xFF;
}
return buf;
}
</script>
</body>
</html>

215
templates/index_bak4.html Normal file
View File

@ -0,0 +1,215 @@
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Table Update Example</title>
<!-- 引入 xlsx 库 -->
<script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
</head>
<style>
/* 页面样式 */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
/* 表格样式 */
#data-table {
width: 95%; /* 减少一些边距 */
border-collapse: collapse;
border: 1px solid black;
margin: auto;
page-break-inside: avoid; /* 防止在表格内部分页 */
}
#data-table th,
#data-table td {
border: 1px solid black;
padding: 8px;
text-align: left;
}
#data-table th {
background-color: #f2f2f2;
}
/* 打印样式 */
@media print {
body, #data-table {
margin: 0;
}
#data-table {
width: 297mm; /* A4 paper width in landscape mode */
height: auto;
margin: 0 auto;
overflow-x: auto; /* 滚动条只在需要时出现 */
}
button {
display: none;
}
}
/* 打印按钮样式 */
button {
display: block;
margin: 1em auto;
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
}
</style>
<body>
<button onclick="window.print()">打印数据</button>
<!-- 添加一个导出按钮 -->
<button onclick="exportToExcel()">导出到Excel</button>
<!-- 添加一个清空缓存的按钮 -->
<button onclick="clearLocalStorage()">清空缓存</button>
<select id="scheduleFilter" onchange="filterTable()">
<option value="">全部</option>
<option value="是"></option>
<option value="否"></option>
</select>
<table id="data-table">
<thead>
<tr>
<th>时间</th><th> 姓名</th> <th> 时段 </th><th> 上线时间 </th><th> 是否排班 </th><th> 工作状态 </th><th> 全天在线时长</th> <th> 全天背单时长 </th><th> 全天完单量 </th><th> 时段内在线时长 </th><th> 时段内背单时长 </th><th>
</tr>
</thead>
<tbody>
<!-- 动态生成的数据行 -->
</tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.js"></script>
<script>
const socket = io();
let allRows = [];
window.addEventListener('load', () => {
const storedAllRows = JSON.parse(localStorage.getItem('allRows'));
const storedScheduleFilter = localStorage.getItem('scheduleFilter');
if (storedAllRows && storedAllRows.length > 0) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
// 清空现有的表格行,防止重复加载
while (tableBody.firstChild) {
tableBody.removeChild(tableBody.firstChild);
}
// 将存储的行数据插入到表格中
storedAllRows.forEach(rowData => {
const row = tableBody.insertRow();
// 假设rowData是一个数组其中包含每个单元格的内容
rowData.forEach(cellData => {
const cell = row.insertCell();
cell.textContent = cellData;
});
});
}
if (storedScheduleFilter) {
document.getElementById('scheduleFilter').value = storedScheduleFilter;
filterTable(); // 调用筛选函数应用筛选条件
}
});
socket.on('update_table', function(data) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
// 清空现有的数据行
//while (tableBody.firstChild) {
// tableBody.removeChild(tableBody.firstChild);
// }
// 清空allRows数组准备接受新数据
//allRows = [];
const now = new Date();
// 保存原始行数据并生成新的行
data['未及格成员'].forEach(function(rowData) {
const row = tableBody.insertRow();
allRows.push(row); // 添加新行到allRows数组
// 添加时间列
const timeCell = row.insertCell(0); // 插入到第一列
timeCell.textContent = now.toLocaleString();
// 添加其他数据列
rowData.forEach(function(cellData) {
const cell = row.insertCell();
cell.textContent = cellData;
});
});
// 更新存储在localStorage中的所有行数据
localStorage.setItem('allRows', JSON.stringify(allRows.map(row => Array.from(row.cells).map(cell => cell.textContent))));
});
// 连接事件
socket.on('connect', function() {
console.log('Connected to server');
});
// 筛选表格函数
function filterTable() {
const selectElement = document.getElementById('scheduleFilter');
const selectedValue = selectElement.value;
allRows.forEach(row => {
const isScheduledCell = row.cells[4]; // 假定“是否排班”是第5列
if (selectedValue === '' || isScheduledCell.textContent === selectedValue) {
row.style.display = '';
} else {
row.style.display = 'none';
}
});
}
// 导出到Excel的函数
function exportToExcel() {
// 获取表格
var table = document.getElementById('data-table');
// 创建工作表
var ws = XLSX.utils.table_to_sheet(table);
// 创建工作簿
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
// 将工作簿输出为二进制格式
var wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
// 将二进制数据转换为Blob对象
var blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' });
// 创建下载链接
var link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = 'exported_data.xlsx';
link.click();
}
// 辅助函数用于将二进制字符串转换为ArrayBuffer
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i=0; i<s.length; i++) {
view[i] = s.charCodeAt(i) & 0xFF;
}
return buf;
}
// 清除本地缓存的函数
function clearLocalStorage() {
localStorage.removeItem('allRows');
localStorage.removeItem('scheduleFilter');
location.reload(); // 刷新页面以重新加载初始状态
}
</script>
</body>
</html>

217
templates/index_bak5.html Normal file
View File

@ -0,0 +1,217 @@
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Table Update Example</title>
<!-- 引入 xlsx 库 -->
<script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
</head>
<style>
/* 页面样式 */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
/* 表格样式 */
#data-table {
width: 95%; /* 减少一些边距 */
border-collapse: collapse;
border: 1px solid black;
margin: auto;
page-break-inside: avoid; /* 防止在表格内部分页 */
}
#data-table th,
#data-table td {
border: 1px solid black;
padding: 8px;
text-align: left;
}
#data-table th {
background-color: #f2f2f2;
}
/* 打印样式 */
@media print {
body, #data-table {
margin: 0;
}
#data-table {
width: 297mm; /* A4 paper width in landscape mode */
height: auto;
margin: 0 auto;
overflow-x: auto; /* 滚动条只在需要时出现 */
}
button {
display: none;
}
}
/* 打印按钮样式 */
button {
display: block;
margin: 1em auto;
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
}
</style>
<body>
<button onclick="window.print()">打印数据</button>
<!-- 添加一个导出按钮 -->
<button onclick="exportToExcel()">导出到Excel</button>
<!-- 添加一个清空缓存的按钮 -->
<button onclick="clearLocalStorage()">清空缓存</button>
<select id="scheduleFilter" onchange="filterTable()">
<option value="">全部</option>
<option value="是"></option>
<option value="否"></option>
</select>
<table id="data-table">
<thead>
<tr>
<th>时间</th><th> 姓名</th> <th> 时段 </th><th> 上线时间 </th><th> 是否排班 </th><th> 工作状态 </th><th> 全天在线时长</th> <th> 全天背单时长 </th><th> 全天完单量 </th><th> 时段内在线时长 </th><th> 时段内背单时长 </th><th>
</tr>
</thead>
<tbody>
<!-- 动态生成的数据行 -->
</tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.js"></script>
<script>
const socket = io();
let allRows = [];
window.addEventListener('load', () => {
const storedAllRows = JSON.parse(localStorage.getItem('allRows'));
const storedScheduleFilter = localStorage.getItem('scheduleFilter');
if (storedAllRows && storedAllRows.length > 0) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
// 清空现有的表格行,防止重复加载
while (tableBody.firstChild) {
tableBody.removeChild(tableBody.firstChild);
}
// 将存储的行数据插入到表格中
storedAllRows.forEach(rowData => {
const row = tableBody.insertRow();
// 假设rowData是一个数组其中包含每个单元格的内容
rowData.forEach(cellData => {
const cell = row.insertCell();
cell.textContent = cellData;
});
});
}
if (storedScheduleFilter) {
document.getElementById('scheduleFilter').value = storedScheduleFilter;
filterTable(); // 调用筛选函数应用筛选条件
}
});
socket.on('update_table', function(data) {
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
// 清空现有的数据行
//while (tableBody.firstChild) {
// tableBody.removeChild(tableBody.firstChild);
// }
// 清空allRows数组准备接受新数据
//allRows = [];
const now = new Date();
// 保存原始行数据并生成新的行
data['未及格成员'].forEach(function(rowData) {
const row = tableBody.insertRow();
allRows.push(row); // 添加新行到allRows数组
// 添加时间列
const timeCell = row.insertCell(0); // 插入到第一列
timeCell.textContent = now.toLocaleString();
// 添加其他数据列
rowData.forEach(function(cellData) {
const cell = row.insertCell();
cell.textContent = cellData;
});
});
// 更新存储在localStorage中的所有行数据
localStorage.setItem('allRows', JSON.stringify(allRows.map(row => Array.from(row.cells).map(cell => cell.textContent))));
});
// 连接事件
socket.on('connect', function() {
console.log('Connected to server');
});
function filterTable() {
const selectElement = document.getElementById('scheduleFilter');
const selectedValue = selectElement.value;
const tableBody = document.getElementById('data-table').getElementsByTagName('tbody')[0];
const rows = Array.from(tableBody.getElementsByTagName('tr'));
rows.forEach(row => {
const isScheduledCell = row.cells[4]; // 假定“是否排班”是第5列
if (selectedValue === '' || isScheduledCell.textContent === selectedValue) {
row.style.display = '';
} else {
row.style.display = 'none';
}
});
}
// 导出到Excel的函数
function exportToExcel() {
// 获取表格
var table = document.getElementById('data-table');
// 创建工作表
var ws = XLSX.utils.table_to_sheet(table);
// 创建工作簿
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
// 将工作簿输出为二进制格式
var wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
// 将二进制数据转换为Blob对象
var blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' });
// 创建下载链接
var link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = 'exported_data.xlsx';
link.click();
}
// 辅助函数用于将二进制字符串转换为ArrayBuffer
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i=0; i<s.length; i++) {
view[i] = s.charCodeAt(i) & 0xFF;
}
return buf;
}
// 清除本地缓存的函数
function clearLocalStorage() {
localStorage.removeItem('allRows');
localStorage.removeItem('scheduleFilter');
location.reload(); // 刷新页面以重新加载初始状态
}
</script>
</body>
</html>

36
test.py
View File

@ -1,3 +1,35 @@
from webdriver_manager.chrome import ChromeDriverManager
import re
print( ChromeDriverManager().install())
def parse_online_time(online_time_str):
# 如果字符串中同时包含小时和分钟
if "小时" in online_time_str and "分钟" in online_time_str:
match = re.search(r'(\d+)小时(\d+)分钟', online_time_str)
if match:
hours, minutes = match.groups()
return int(hours) * 60 + int(minutes)
# 如果字符串中只包含小时
elif "小时" in online_time_str:
match = re.search(r'(\d+)小时', online_time_str)
if match:
hours = match.group(1)
return int(hours) * 60
# 如果字符串中只包含分钟
elif "分钟" in online_time_str:
match = re.search(r'(\d+)分钟', online_time_str)
if match:
minutes = match.group(1)
return int(minutes)
# 如果字符串中既不包含小时也不包含分钟则返回0
else:
return 0
# 测试函数
print(parse_online_time("晚高峰 目标在线时长2小时30分钟目标完单量5")) # 应该返回150
print(parse_online_time("晚高峰 目标在线时长1小时目标完单量5")) # 应该返回60
print(parse_online_time("晚高峰 目标在线时长30分钟目标完单量5")) # 应该返回30
print(parse_online_time("晚高峰 目标完单量5")) # 应该返回0

38
客户端.spec Normal file
View File

@ -0,0 +1,38 @@
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['run_window_v4.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='客户端',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)

38
服务端.spec Normal file
View File

@ -0,0 +1,38 @@
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['run_window_v3.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='服务端',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)