[Debian packaging] Help with package test errors
I am in the process of packaging PyInstaller for Debian. As part of that, I am trying to wrap my mind around the purpose of the files and how it should be packaged. Can you please explain to me the purpose of the various run and run_d files in PyInstaller/bootloader?
They're our bootloaders which are executables that ultimately replace the python entrypoint. For repackaging, you presumably want to recompile your own so:
rm -rf PyInstaller/bootloader/*
pushd bootloader
./waf all
popd
# The usual pip install . or python -m build --wheel
Thank you. I think I have that part of the packaging working now. I still have a few failing tests, which appear to be a conflict with the build environment. I will work on them for a while and reach out to you if I am not able to figure out the root cause.
Feel free to post pytest's output for us to look at.
I currently build with the following test results:
= 91 failed, 1018 passed, 247 skipped, 24 xfailed, 1 xpassed, 17 warnings in 3430.18s (0:57:10) =
A few of these I think have to do with missing dependencies in my build environment. Some of the others probably relate to Debian using a schroot system called sbuild for building packages.
https://wiki.debian.org/sbuild
For example, I think the following error has to do with the schroot not having a real screen attached to it:
____________________ test_pyi_splash_in_subprocess[onefile] ____________________
pyi_builder = <PyInstaller.utils.conftest.AppBuilder object at 0x7ff849347920>
script_dir = local('/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/scripts')
def test_pyi_splash_in_subprocess(pyi_builder, script_dir):
splash_image = os.path.join(script_dir, '..', 'data', 'splash', 'image.png')
> pyi_builder.test_script(
"pyi_splash_in_subprocess.py",
pyi_args=["--splash", splash_image],
)
E Failed: Running exe /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/dist/pyi_splash_in_subprocess failed with return-code 1.
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/test_splash.py:99: Failed
----------------------------- Captured stdout call -----------------------------
------- Starting build. -------
------- Build finished, now running executable. -------
[2971381] RUNNING: '/tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/dist/pyi_splash_in_subprocess' , args: ['./pyi_splash_in_subprocess']
----------------------------- Captured stderr call -----------------------------
------- Starting build. -------
------- Build finished, now running executable. -------
[PYI-2971381:DEBUG] PyInstaller Bootloader 6.x
[PYI-2971381:DEBUG] LOADER: executable file: /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/dist/pyi_splash_in_subprocess
[PYI-2971381:DEBUG] LOADER: trying to load executable-embedded archive...
[PYI-2971381:DEBUG] LOADER: attempting to open archive /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/dist/pyi_splash_in_subprocess
[PYI-2971381:DEBUG] LOADER: cookie found at offset 0xAAFB77
[PYI-2971381:DEBUG] LOADER: archive file: /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/dist/pyi_splash_in_subprocess
[PYI-2971381:DEBUG] LOADER: application has onefile semantics...
[PYI-2971381:DEBUG] LOADER: _PYI_ARCHIVE_FILE not defined...
[PYI-2971381:DEBUG] LOADER: process level = 0
[PYI-2971381:DEBUG] LOADER: this is parent process of onefile application.
[PYI-2971381:DEBUG] LOADER: creating temporary directory (runtime_tmpdir=(null))...
[PYI-2971381:DEBUG] LOADER: created temporary directory: /tmp/_MEIMLQd3e
[PYI-2971381:DEBUG] LOADER: application's top-level directory: /tmp/_MEIMLQd3e
[PYI-2971381:DEBUG] LOADER: loading splash screen resources...
[PYI-2971381:DEBUG] LOADER: setting up splash screen...
[PYI-2971381:DEBUG] LOADER: extracting splash screen dependencies...
[PYI-2971381:DEBUG] SPLASH: loading Tcl library from: /tmp/_MEIMLQd3e/libtcl8.6.so
[PYI-2971381:DEBUG] SPLASH: loading Tk library from: /tmp/_MEIMLQd3e/libtk8.6.so
[PYI-2971381:DEBUG] LOADER: loaded functions from Tcl/Tk shared libraries.
[PYI-2971381:DEBUG] SPLASH: created thread for Tcl interpreter.
[PYI-2971381:DEBUG] SPLASH: error while initializing Tk: no display name and no $DISPLAY environment variable
[PYI-2971381:DEBUG] SPLASH: starting clean-up in splash screen thread...
[PYI-2971381:DEBUG] SPLASH: splash screen started.
[PYI-2971381:DEBUG] LOADER: extracting files to temporary directory...
[PYI-2971381:DEBUG] SPLASH: clean-up in splash screen thread complete!
[PYI-2971381:DEBUG] LOADER: storing process name: pyi_splash_in_s
[PYI-2971381:DEBUG] LOADER: setting LD_LIBRARY_PATH_ORIG=/usr/lib/libeatmydata
[PYI-2971381:DEBUG] LOADER: setting LD_LIBRARY_PATH=/tmp/_MEIMLQd3e:/usr/lib/libeatmydata
[PYI-2971381:DEBUG] LOADER: setting _PYI_APPLICATION_HOME_DIR to /tmp/_MEIMLQd3e
[PYI-2971381:DEBUG] LOADER: starting the child process...
[PYI-2971381:DEBUG] LOADER: registering signal handlers
[PYI-2971383:DEBUG] LOADER: starting child process via execvp
[PYI-2971383:DEBUG] PyInstaller Bootloader 6.x
[PYI-2971383:DEBUG] LOADER: executable file: /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/dist/pyi_splash_in_subprocess
[PYI-2971383:DEBUG] LOADER: trying to load executable-embedded archive...
[PYI-2971383:DEBUG] LOADER: attempting to open archive /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/dist/pyi_splash_in_subprocess
[PYI-2971383:DEBUG] LOADER: cookie found at offset 0xAAFB77
[PYI-2971383:DEBUG] LOADER: archive file: /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/dist/pyi_splash_in_subprocess
[PYI-2971383:DEBUG] LOADER: application has onefile semantics...
[PYI-2971383:DEBUG] LOADER: _PYI_ARCHIVE_FILE already defined: /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/dist/pyi_splash_in_subprocess
[PYI-2971383:DEBUG] LOADER: using same archive file as parent environment!
[PYI-2971383:DEBUG] LOADER: process level = 1
[PYI-2971383:DEBUG] LOADER: restoring process name: pyi_splash_in_s
[PYI-2971383:DEBUG] LOADER: this is child process of onefile application (main application process).
[PYI-2971383:DEBUG] LOADER: application's top-level directory: /tmp/_MEIMLQd3e
[PYI-2971383:DEBUG] LOADER: process is not eligible for splash screen
[PYI-2971383:DEBUG] LOADER: loading Python shared library: /tmp/_MEIMLQd3e/libpython3.12.so
[PYI-2971383:DEBUG] LOADER: loaded functions from Python shared library.
[PYI-2971383:DEBUG] LOADER: pre-initializing embedded python interpreter...
[PYI-2971383:DEBUG] LOADER: creating PyConfig structure...
[PYI-2971383:DEBUG] LOADER: initializing interpreter configuration...
[PYI-2971383:DEBUG] LOADER: setting program name...
[PYI-2971383:DEBUG] LOADER: setting python home path...
[PYI-2971383:DEBUG] LOADER: setting module search paths...
[PYI-2971383:DEBUG] LOADER: setting sys.argv...
[PYI-2971383:DEBUG] LOADER: applying run-time options...
[PYI-2971383:DEBUG] LOADER: starting embedded python interpreter...
[PYI-2971383:DEBUG] LOADER: setting sys._MEIPASS
[PYI-2971383:DEBUG] LOADER: importing modules from PKG/CArchive
[PYI-2971383:DEBUG] LOADER: extracted struct
[PYI-2971383:DEBUG] LOADER: running unmarshalled code object for module struct...
[PYI-2971383:DEBUG] LOADER: extracted pyimod01_archive
[PYI-2971383:DEBUG] LOADER: running unmarshalled code object for module pyimod01_archive...
[PYI-2971383:DEBUG] LOADER: extracted pyimod02_importers
[PYI-2971383:DEBUG] LOADER: running unmarshalled code object for module pyimod02_importers...
[PYI-2971383:DEBUG] LOADER: extracted pyimod03_ctypes
[PYI-2971383:DEBUG] LOADER: running unmarshalled code object for module pyimod03_ctypes...
[PYI-2971383:DEBUG] LOADER: looking for PYZ archive TOC entry...
[PYI-2971383:DEBUG] LOADER: path to PYZ archive stored into sys._pyinstaller_pyz...
[PYI-2971383:DEBUG] LOADER: running pyiboot01_bootstrap.py
[PYI-2971383:DEBUG] LOADER: running pyi_rth_inspect.py
[PYI-2971383:DEBUG] LOADER: running pyi_splash_in_subprocess.py
The environment does not allow connecting to the splash screen. Did bootloader fail to initialize it?
Traceback (most recent call last):
File "PyInstaller/fake-modules/pyi_splash.py", line 108, in <module>
File "<frozen os>", line 714, in __getitem__
KeyError: '_PYI_SPLASH_IPC'
Traceback (most recent call last):
File "pyi_splash_in_subprocess.py", line 16, in <module>
AssertionError: Module is not marked as initialized!
[PYI-2971383:ERROR] Failed to execute script 'pyi_splash_in_subprocess' due to unhandled exception!
[PYI-2971383:DEBUG] LOADER: ERROR.
[PYI-2971383:DEBUG] LOADER: manually flushing stdout and stderr...
[PYI-2971383:DEBUG] LOADER: cleaning up Python interpreter...
[PYI-2971383:DEBUG] LOADER: unloading Python shared library...
[PYI-2971383:DEBUG] LOADER: end of process reached!
[PYI-2971381:DEBUG] LOADER: restoring signal handlers
[PYI-2971381:DEBUG] LOADER: returning child exit status 1
[PYI-2971381:DEBUG] LOADER: child process exited (return code: 1)
[PYI-2971381:DEBUG] LOADER: performing cleanup...
[PYI-2971381:DEBUG] SPLASH: cleaning up splash screen resources...
[PYI-2971381:DEBUG] SPLASH: splash screen thread has already shut down.
[PYI-2971381:DEBUG] SPLASH: joining the splash screen thread...
[PYI-2971381:DEBUG] SPLASH: splash screen thread join succeeded.
[PYI-2971381:DEBUG] SPLASH: unloading Tk shared library...
[PYI-2971381:DEBUG] SPLASH: unloading Tcl shared library...
[PYI-2971381:DEBUG] SPLASH: cleanup complete!
[PYI-2971381:DEBUG] LOADER: removing temporary directory: /tmp/_MEIMLQd3e
[PYI-2971381:DEBUG] LOADER: end of process reached!
------------------------------ Captured log call -------------------------------
INFO PyInstaller.__main__:__main__.py:191 PyInstaller: 6.10.0, contrib hooks: unknown
INFO PyInstaller.__main__:__main__.py:192 Python: 3.12.7
INFO PyInstaller.__main__:__main__.py:193 Platform: Linux-6.10.11-amd64-x86_64-with-glibc2.40
INFO PyInstaller.__main__:__main__.py:194 Python environment: /usr
INFO PyInstaller.__main__:__main__.py:64 wrote /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/pyi_splash_in_subprocess.spec
INFO PyInstaller.building.build_main:build_main.py:486 Module search paths (PYTHONPATH):
['None',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/unit',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/test_hooks',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build',
'/<<PKGBUILDDIR>>/debian/python3-pyinstaller/usr/lib/python3.12/dist-packages',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build',
'/usr/lib/python312.zip',
'/usr/lib/python3.12',
'/usr/lib/python3.12/lib-dynload',
'/usr/local/lib/python3.12/dist-packages',
'/usr/lib/python3/dist-packages',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build',
'/usr/lib/python3/dist-packages/setuptools/_vendor',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build',
'/tmp/pytest-of-soren/pytest-0/test_issue_24920',
'/tmp/pytest-of-soren/pytest-0/test_issue_51310',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/scripts',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/modules']
INFO PyInstaller.building.datastruct:datastruct.py:169 checking Analysis
INFO PyInstaller.building.datastruct:datastruct.py:173 Building Analysis because Analysis-743.toc is non existent
INFO PyInstaller.building.build_main:build_main.py:637 Running Analysis Analysis-743.toc
INFO PyInstaller.building.build_main:build_main.py:638 Target bytecode optimization level: 0
INFO PyInstaller.depend.analysis:analysis.py:939 Reusing cached module dependency graph...
INFO PyInstaller.depend.analysis:analysis.py:121 Caching module graph hooks...
INFO PyInstaller.building.build_main:build_main.py:667 Looking for Python shared library...
INFO PyInstaller.building.build_main:build_main.py:672 Using Python shared library: /lib/x86_64-linux-gnu/libpython3.12.so
INFO PyInstaller.building.build_main:build_main.py:697 Analyzing /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/scripts/pyi_splash_in_subprocess.py
INFO PyInstaller.depend.analysis:analysis.py:521 Processing pre-find-module-path hook 'hook-pyi_splash.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_find_module_path'
INFO PyInstaller.utils.hooks:hook-pyi_splash.py:33 Adding pyi_splash module to application dependencies.
INFO PyInstaller.depend.analysis:analysis.py:304 Processing module hooks (post-graph stage)...
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-pickle.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-encodings.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-heapq.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.building.build_main:build_main.py:729 Performing binary vs. data reclassification (2 entries)
INFO PyInstaller.building.build_main:build_main.py:752 Looking for ctypes DLLs
INFO PyInstaller.depend.analysis:analysis.py:706 Analyzing run-time hooks ...
INFO PyInstaller.depend.analysis:analysis.py:727 Including run-time hook 'pyi_rth_inspect.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/rthooks'
INFO PyInstaller.building.build_main:build_main.py:922 Looking for dynamic libraries
INFO PyInstaller.building.build_main:build_main.py:1044 Warnings written to /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/build/pyi_splash_in_subprocess/warn-pyi_splash_in_subprocess.txt
INFO PyInstaller.building.build_main:build_main.py:1053 Graph cross-reference written to /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/build/pyi_splash_in_subprocess/xref-pyi_splash_in_subprocess.html
INFO PyInstaller.building.datastruct:datastruct.py:169 checking PYZ
INFO PyInstaller.building.datastruct:datastruct.py:173 Building PYZ because PYZ-712.toc is non existent
INFO PyInstaller.building.api:api.py:138 Building PYZ (ZlibArchive) /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/build/pyi_splash_in_subprocess/PYZ-712.pyz
INFO PyInstaller.building.api:api.py:160 Building PYZ (ZlibArchive) /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/build/pyi_splash_in_subprocess/PYZ-712.pyz completed successfully.
INFO PyInstaller.building.splash:splash.py:202 Collect Tcl/Tk data files for the splash screen
WARNING PyInstaller.building.splash:splash.py:231 The local Tcl/Tk installation is missing the file _tk_data/license.terms. The behavior of the splash screen is therefore undefined and may be unsupported.
INFO PyInstaller.building.datastruct:datastruct.py:169 checking Splash
INFO PyInstaller.building.datastruct:datastruct.py:173 Building Splash because Splash-11.toc is non existent
INFO PyInstaller.building.splash:splash.py:284 Building Splash /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/build/pyi_splash_in_subprocess/Splash-11.res
INFO PyInstaller.building.datastruct:datastruct.py:169 checking PKG
INFO PyInstaller.building.datastruct:datastruct.py:173 Building PKG because PKG-713.toc is non existent
INFO PyInstaller.building.api:api.py:272 Building PKG (CArchive) pyi_splash_in_subprocess.pkg
INFO PyInstaller.building.api:api.py:356 Building PKG (CArchive) pyi_splash_in_subprocess.pkg completed successfully.
INFO PyInstaller.building.api:api.py:736 Bootloader /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/bootloader/Linux-64bit-intel/run_d
INFO PyInstaller.building.datastruct:datastruct.py:169 checking EXE
INFO PyInstaller.building.datastruct:datastruct.py:173 Building EXE because EXE-714.toc is non existent
INFO PyInstaller.building.api:api.py:747 Building EXE from EXE-714.toc
INFO PyInstaller.building.api:api.py:760 Copying bootloader EXE to /tmp/pytest-of-soren/pytest-0/test_pyi_splash_in_subprocess_1/dist/pyi_splash_in_subprocess
INFO PyInstaller.building.api:api.py:818 Appending PKG archive to custom ELF section in EXE
INFO PyInstaller.building.api:api.py:888 Building EXE from EXE-714.toc completed successfully.
There might be nothing I can do to fix this, but I like to run as many tests as possible. For those more familiar with what the tests require, do you have any idea how I might be able to get this working?
Here is a similar failure that I think has the same root cause.
_________________ test_Qt_QtWebEngineWidgets_PySide6[onefile] __________________
pyi_builder = <PyInstaller.utils.conftest.AppBuilder object at 0x7ff849301880>
@requires('PySide6 >= 6.2.2')
@pytest.mark.skipif(
check_requirement('PySide6 == 6.5.0') and is_win,
reason='PySide6 6.5.0 PyPI wheels for Windows are missing opengl32sw.dll.'
)
def test_Qt_QtWebEngineWidgets_PySide6(pyi_builder):
> _test_Qt_QtWebEngineWidgets(pyi_builder, 'PySide6')
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/test_qt.py:564:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pyi_builder = <PyInstaller.utils.conftest.AppBuilder object at 0x7ff849301880>
qt_flavor = 'PySide6'
def _test_Qt_QtWebEngineWidgets(pyi_builder, qt_flavor):
source = """
import sys
# Disable QtWebEngine/chromium sanbox, if necessary
if {1}:
import os
os.environ['QTWEBENGINE_DISABLE_SANDBOX'] = '1'
from {0}.QtWidgets import QApplication
from {0}.QtWebEngineWidgets import QWebEngineView
from {0}.QtCore import QTimer
is_qt6 = '{0}' in {{'PyQt6', 'PySide6'}}
# Web page to display
WEB_PAGE_HTML = '''
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test web page</title>
</head>
<body>
<p>This is a test web page with internationalised characters.</p>
<p>HЯ⾀ÄÉÖÜ</p>
</body>
</html>
'''
app = QApplication(sys.argv)
class JSResultTester:
CODE = "1+1"
EXPECTED = 2
def __init__(self):
self.result = None
def setup(self, view):
# Need to explicitly pass 0 as world id due to
# https://bugreports.qt.io/browse/PYSIDE-643
view.page().runJavaScript(self.CODE, 0, self.store)
view.page().loadFinished.connect(
# Display the web page for one second after it loads.
lambda ok: QTimer.singleShot(1000, self.verify_and_quit))
def store(self, res):
self.result = res
def verify_and_quit(self):
# Make sure the renderer process is alive.
if self.result != self.EXPECTED:
raise ValueError(
f"JS result is {{self.result!r}} but expected {{self.EXPECTED!r}}. "
"Is the QtWebEngine renderer process running properly?")
app.quit()
view = QWebEngineView()
view.setHtml(WEB_PAGE_HTML)
view.show()
js_result_tester = JSResultTester()
js_result_tester.setup(view)
if is_qt6:
# Qt6: exec_() is deprecated in PySide6 and removed from PyQt6 in favor of exec()
res = app.exec()
else:
res = app.exec_()
sys.exit(res)
""".format(qt_flavor, _disable_qtwebengine_sandbox(qt_flavor))
> pyi_builder.test_source(source, **USE_WINDOWED_KWARG)
E Failed: Running exe /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/dist/test_source failed with return-code -6.
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/test_qt.py:441: Failed
----------------------------- Captured stdout call -----------------------------
------- Starting build. -------
------- Build finished, now running executable. -------
[2834866] RUNNING: '/tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/dist/test_source' , args: ['./test_source']
----------------------------- Captured stderr call -----------------------------
------- Starting build. -------
------- Build finished, now running executable. -------
[PYI-2834866:DEBUG] PyInstaller Bootloader 6.x
[PYI-2834866:DEBUG] LOADER: executable file: /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/dist/test_source
[PYI-2834866:DEBUG] LOADER: trying to load executable-embedded archive...
[PYI-2834866:DEBUG] LOADER: attempting to open archive /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/dist/test_source
[PYI-2834866:DEBUG] LOADER: cookie found at offset 0xE0C3DC0
[PYI-2834866:DEBUG] LOADER: archive file: /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/dist/test_source
[PYI-2834866:DEBUG] LOADER: application has onefile semantics...
[PYI-2834866:DEBUG] LOADER: _PYI_ARCHIVE_FILE not defined...
[PYI-2834866:DEBUG] LOADER: process level = 0
[PYI-2834866:DEBUG] LOADER: this is parent process of onefile application.
[PYI-2834866:DEBUG] LOADER: creating temporary directory (runtime_tmpdir=(null))...
[PYI-2834866:DEBUG] LOADER: created temporary directory: /tmp/_MEIYjfn6u
[PYI-2834866:DEBUG] LOADER: application's top-level directory: /tmp/_MEIYjfn6u
[PYI-2834866:DEBUG] LOADER: splash screen is unavailable.
[PYI-2834866:DEBUG] LOADER: extracting files to temporary directory...
[PYI-2834866:DEBUG] LOADER: storing process name: test_source
[PYI-2834866:DEBUG] LOADER: setting LD_LIBRARY_PATH_ORIG=/usr/lib/libeatmydata
[PYI-2834866:DEBUG] LOADER: setting LD_LIBRARY_PATH=/tmp/_MEIYjfn6u:/usr/lib/libeatmydata
[PYI-2834866:DEBUG] LOADER: setting _PYI_APPLICATION_HOME_DIR to /tmp/_MEIYjfn6u
[PYI-2834866:DEBUG] LOADER: starting the child process...
[PYI-2834866:DEBUG] LOADER: registering signal handlers
[PYI-2834868:DEBUG] LOADER: starting child process via execvp
[PYI-2834868:DEBUG] PyInstaller Bootloader 6.x
[PYI-2834868:DEBUG] LOADER: executable file: /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/dist/test_source
[PYI-2834868:DEBUG] LOADER: trying to load executable-embedded archive...
[PYI-2834868:DEBUG] LOADER: attempting to open archive /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/dist/test_source
[PYI-2834868:DEBUG] LOADER: cookie found at offset 0xE0C3DC0
[PYI-2834868:DEBUG] LOADER: archive file: /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/dist/test_source
[PYI-2834868:DEBUG] LOADER: application has onefile semantics...
[PYI-2834868:DEBUG] LOADER: _PYI_ARCHIVE_FILE already defined: /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/dist/test_source
[PYI-2834868:DEBUG] LOADER: using same archive file as parent environment!
[PYI-2834868:DEBUG] LOADER: process level = 1
[PYI-2834868:DEBUG] LOADER: restoring process name: test_source
[PYI-2834868:DEBUG] LOADER: this is child process of onefile application (main application process).
[PYI-2834868:DEBUG] LOADER: application's top-level directory: /tmp/_MEIYjfn6u
[PYI-2834868:DEBUG] LOADER: splash screen is unavailable.
[PYI-2834868:DEBUG] LOADER: loading Python shared library: /tmp/_MEIYjfn6u/libpython3.12.so
[PYI-2834868:DEBUG] LOADER: loaded functions from Python shared library.
[PYI-2834868:DEBUG] LOADER: pre-initializing embedded python interpreter...
[PYI-2834868:DEBUG] LOADER: creating PyConfig structure...
[PYI-2834868:DEBUG] LOADER: initializing interpreter configuration...
[PYI-2834868:DEBUG] LOADER: setting program name...
[PYI-2834868:DEBUG] LOADER: setting python home path...
[PYI-2834868:DEBUG] LOADER: setting module search paths...
[PYI-2834868:DEBUG] LOADER: setting sys.argv...
[PYI-2834868:DEBUG] LOADER: applying run-time options...
[PYI-2834868:DEBUG] LOADER: starting embedded python interpreter...
[PYI-2834868:DEBUG] LOADER: setting sys._MEIPASS
[PYI-2834868:DEBUG] LOADER: importing modules from PKG/CArchive
[PYI-2834868:DEBUG] LOADER: extracted struct
[PYI-2834868:DEBUG] LOADER: running unmarshalled code object for module struct...
[PYI-2834868:DEBUG] LOADER: extracted pyimod01_archive
[PYI-2834868:DEBUG] LOADER: running unmarshalled code object for module pyimod01_archive...
[PYI-2834868:DEBUG] LOADER: extracted pyimod02_importers
[PYI-2834868:DEBUG] LOADER: running unmarshalled code object for module pyimod02_importers...
[PYI-2834868:DEBUG] LOADER: extracted pyimod03_ctypes
[PYI-2834868:DEBUG] LOADER: running unmarshalled code object for module pyimod03_ctypes...
[PYI-2834868:DEBUG] LOADER: looking for PYZ archive TOC entry...
[PYI-2834868:DEBUG] LOADER: path to PYZ archive stored into sys._pyinstaller_pyz...
[PYI-2834868:DEBUG] LOADER: running pyiboot01_bootstrap.py
[PYI-2834868:DEBUG] LOADER: running pyi_rth_inspect.py
[PYI-2834868:DEBUG] LOADER: running pyi_rth_pyside6.py
[PYI-2834868:DEBUG] LOADER: running test_source.py
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: linuxfb, vkkhrdisplay, eglfs, xcb, minimalegl, offscreen, minimal.
[PYI-2834866:DEBUG] LOADER: restoring signal handlers
[PYI-2834866:DEBUG] LOADER: child received signal 6; storing for re-raise after cleanup...
[PYI-2834866:DEBUG] LOADER: child process exited (return code: 1)
[PYI-2834866:DEBUG] LOADER: performing cleanup...
[PYI-2834866:DEBUG] LOADER: removing temporary directory: /tmp/_MEIYjfn6u
[PYI-2834866:DEBUG] LOADER: re-raising child signal 6
------------------------------ Captured log call -------------------------------
INFO PyInstaller.__main__:__main__.py:191 PyInstaller: 6.10.0, contrib hooks: unknown
INFO PyInstaller.__main__:__main__.py:192 Python: 3.12.7
INFO PyInstaller.__main__:__main__.py:193 Platform: Linux-6.10.11-amd64-x86_64-with-glibc2.40
INFO PyInstaller.__main__:__main__.py:194 Python environment: /usr
INFO PyInstaller.__main__:__main__.py:64 wrote /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/test_source.spec
INFO PyInstaller.building.build_main:build_main.py:486 Module search paths (PYTHONPATH):
['None',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/unit',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/test_hooks',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build',
'/<<PKGBUILDDIR>>/debian/python3-pyinstaller/usr/lib/python3.12/dist-packages',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build',
'/usr/lib/python312.zip',
'/usr/lib/python3.12',
'/usr/lib/python3.12/lib-dynload',
'/usr/local/lib/python3.12/dist-packages',
'/usr/lib/python3/dist-packages',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build',
'/usr/lib/python3/dist-packages/setuptools/_vendor',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build',
'/tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/modules']
INFO PyInstaller.building.datastruct:datastruct.py:169 checking Analysis
INFO PyInstaller.building.datastruct:datastruct.py:173 Building Analysis because Analysis-525.toc is non existent
INFO PyInstaller.building.build_main:build_main.py:637 Running Analysis Analysis-525.toc
INFO PyInstaller.building.build_main:build_main.py:638 Target bytecode optimization level: 0
INFO PyInstaller.depend.analysis:analysis.py:939 Reusing cached module dependency graph...
INFO PyInstaller.depend.analysis:analysis.py:121 Caching module graph hooks...
INFO PyInstaller.building.build_main:build_main.py:667 Looking for Python shared library...
INFO PyInstaller.building.build_main:build_main.py:672 Using Python shared library: /lib/x86_64-linux-gnu/libpython3.12.so
INFO PyInstaller.building.build_main:build_main.py:697 Analyzing /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/test_source.py
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PySide6.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-shiboken6.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PySide6.QtNetwork.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PySide6.QtWidgets.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PySide6.QtWebEngineWidgets.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PySide6.QtCore.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
WARNING PyInstaller.utils.hooks.qt:__init__.py:476 QtLibraryInfo(PySide6): could not find translations with base name 'qt'! These translations will not be collected.
WARNING PyInstaller.utils.hooks.qt:__init__.py:476 QtLibraryInfo(PySide6): could not find translations with base name 'qtbase'! These translations will not be collected.
INFO PyInstaller.depend.analysis:analysis.py:304 Processing module hooks (post-graph stage)...
WARNING PyInstaller.depend.imphook:imphook.py:511 Hidden import "PySide6.QtQuickWidgets" not found!
WARNING PyInstaller.depend.imphook:imphook.py:511 Hidden import "PySide6.QtPositioning" not found!
WARNING PyInstaller.depend.imphook:imphook.py:511 Hidden import "PySide6.QtDBus" not found!
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PySide6.QtOpenGL.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
WARNING PyInstaller.depend.imphook:imphook.py:511 Hidden import "PySide6.QtDBus" not found!
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PySide6.QtWebChannel.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-pickle.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PySide6.QtQuick.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
WARNING PyInstaller.depend.imphook:imphook.py:511 Hidden import "PySide6.QtDBus" not found!
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PySide6.QtGui.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
WARNING PyInstaller.depend.imphook:imphook.py:511 Hidden import "PySide6.QtDBus" not found!
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PySide6.QtQml.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
WARNING PyInstaller.utils.hooks.qt:__init__.py:476 QtLibraryInfo(PySide6): could not find translations with base name 'qtdeclarative'! These translations will not be collected.
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PySide6.QtPrintSupport.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
WARNING PyInstaller.depend.imphook:imphook.py:511 Hidden import "PySide6.QtDBus" not found!
WARNING PyInstaller.depend.imphook:imphook.py:511 Hidden import "PySide6.QtDBus" not found!
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-encodings.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-heapq.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PySide6.QtWebEngineCore.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
WARNING PyInstaller.utils.hooks.qt:__init__.py:476 QtLibraryInfo(PySide6): could not find translations with base name 'qtwebengine'! These translations will not be collected.
INFO PyInstaller.utils.hooks.qt:__init__.py:1164 QtLibraryInfo(PySide6): overriding relative destination path of QtWebEngineProcess helper from 'lib/qt6/libexec' to 'libexec'!
WARNING PyInstaller.depend.imphook:imphook.py:511 Hidden import "PySide6.QtPositioning" not found!
WARNING PyInstaller.depend.imphook:imphook.py:511 Hidden import "PySide6.QtDBus" not found!
INFO PyInstaller.building.build_main:build_main.py:729 Performing binary vs. data reclassification (99 entries)
INFO PyInstaller.building.build_main:build_main.py:752 Looking for ctypes DLLs
INFO PyInstaller.depend.analysis:analysis.py:706 Analyzing run-time hooks ...
INFO PyInstaller.depend.analysis:analysis.py:727 Including run-time hook 'pyi_rth_inspect.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/rthooks'
INFO PyInstaller.depend.analysis:analysis.py:727 Including run-time hook 'pyi_rth_pyside6.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/rthooks'
INFO PyInstaller.depend.analysis:analysis.py:521 Processing pre-find-module-path hook 'hook-_pyi_rth_utils.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_find_module_path'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-_pyi_rth_utils.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.building.build_main:build_main.py:922 Looking for dynamic libraries
INFO PyInstaller.building.build_main:build_main.py:1044 Warnings written to /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/build/test_source/warn-test_source.txt
INFO PyInstaller.building.build_main:build_main.py:1053 Graph cross-reference written to /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/build/test_source/xref-test_source.html
INFO PyInstaller.building.datastruct:datastruct.py:169 checking PYZ
INFO PyInstaller.building.datastruct:datastruct.py:173 Building PYZ because PYZ-495.toc is non existent
INFO PyInstaller.building.api:api.py:138 Building PYZ (ZlibArchive) /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/build/test_source/PYZ-495.pyz
INFO PyInstaller.building.api:api.py:160 Building PYZ (ZlibArchive) /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/build/test_source/PYZ-495.pyz completed successfully.
INFO PyInstaller.building.datastruct:datastruct.py:169 checking PKG
INFO PyInstaller.building.datastruct:datastruct.py:173 Building PKG because PKG-497.toc is non existent
INFO PyInstaller.building.api:api.py:272 Building PKG (CArchive) test_source.pkg
INFO PyInstaller.building.api:api.py:356 Building PKG (CArchive) test_source.pkg completed successfully.
INFO PyInstaller.building.api:api.py:736 Bootloader /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/bootloader/Linux-64bit-intel/run_d
INFO PyInstaller.building.datastruct:datastruct.py:169 checking EXE
INFO PyInstaller.building.datastruct:datastruct.py:173 Building EXE because EXE-498.toc is non existent
INFO PyInstaller.building.api:api.py:747 Building EXE from EXE-498.toc
INFO PyInstaller.building.api:api.py:760 Copying bootloader EXE to /tmp/pytest-of-soren/pytest-0/test_Qt_QtWebEngineWidgets_PyS1/dist/test_source
INFO PyInstaller.building.api:api.py:818 Appending PKG archive to custom ELF section in EXE
INFO PyInstaller.building.api:api.py:888 Building EXE from EXE-498.toc completed successfully.
I guess we would need to skip all tests that depend on UI toolkit (Tcl/Tk - either for splash screen or via tkinter, various Qt bindings, Gtk via GObject introspection) if ran on linux and if no X/Wayland session is available. At the moment, graphical session is always assumed to be available, and on our linux CI runners, we run Xvfb to ensure that this is the case.
So it might be a good idea to temporarily disable this step
https://github.com/pyinstaller/pyinstaller/blob/2ebca31568e4d84371845a9358245aa4b2de0337/.github/workflows/ci.yml#L180-L184
and ensure that the workflow still passes (by skipping the corresponding tests).
xvfb-run should get you past those.
The xvfb hint was very helpful. It turns out Debian already has a python3-pytest-xvfb package I can add to the build environment which took care of all these screen errors. I am now down to:
= 67 failed, 1051 passed, 245 skipped, 24 xfailed, 1 xpassed, 17 warnings in 3549.39s (0:59:09) =
I am going to work them over for a bit. I will post again if I run into a problem that isn't obvious.
I have a number of scipy errors like the following. Should I only install either Qt5 or Qt6 packages, but not both?
_________________________ test_scipy[onedir-scipy.fft] _________________________
pyi_builder = <PyInstaller.utils.conftest.AppBuilder object at 0x7f42d9a5ce00>
module = 'scipy.fft'
@pytest.mark.parametrize(
'module', [
'scipy',
'scipy.cluster',
'scipy.constants',
'scipy.datasets',
'scipy.fft',
'scipy.fftpack',
'scipy.integrate',
'scipy.interpolate',
'scipy.io',
'scipy.linalg',
'scipy.misc',
'scipy.ndimage',
'scipy.odr',
'scipy.optimize',
'scipy.signal',
'scipy.sparse',
'scipy.spatial',
'scipy.special',
'scipy.stats',
]
)
@pytest.mark.parametrize('pyi_builder', ['onedir'], indirect=True)
def test_scipy(pyi_builder, module):
> pyi_builder.test_source("""
import {0}
""".format(module))
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/test_hooks/test_scipy.py:57:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/utils/conftest.py:439: in _test_building
pyi_main.run(pyi_args, PYI_CONFIG)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/__main__.py:215: in run
run_build(pyi_config, spec_file, **vars(args))
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/__main__.py:70: in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/building/build_main.py:1227: in main
build(specfile, distpath, workpath, clean_build)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/building/build_main.py:1167: in build
exec(code, spec_namespace)
/tmp/pytest-of-soren/pytest-0/test_scipy_onedir_scipy_fft_0/test_source.spec:4: in <module>
a = Analysis(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/building/build_main.py:558: in __init__
self.__postinit__()
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/building/datastruct.py:184: in __postinit__
self.assemble()
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/building/build_main.py:704: in assemble
self.graph.process_post_graph_hooks(self)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:329: in process_post_graph_hooks
module_hook.post_graph(analysis)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/imphook.py:450: in post_graph
self._process_hidden_imports()
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/imphook.py:506: in _process_hidden_imports
self.module_graph.import_hook(import_module_name, caller)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1249: in import_hook
target_package, target_module_partname = self._find_head_package(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1428: in _find_head_package
target_package = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2274: in _safe_import_hook
self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1288: in import_hook
for target_submodule in self._import_importable_package_submodules(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1537: in _import_importable_package_submodules
submodule = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1249: in import_hook
target_package, target_module_partname = self._find_head_package(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1428: in _find_head_package
target_package = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1249: in import_hook
target_package, target_module_partname = self._find_head_package(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1428: in _find_head_package
target_package = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1249: in import_hook
target_package, target_module_partname = self._find_head_package(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1428: in _find_head_package
target_package = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2274: in _safe_import_hook
self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1288: in import_hook
for target_submodule in self._import_importable_package_submodules(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1537: in _import_importable_package_submodules
submodule = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1249: in import_hook
target_package, target_module_partname = self._find_head_package(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1428: in _find_head_package
target_package = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2274: in _safe_import_hook
self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1288: in import_hook
for target_submodule in self._import_importable_package_submodules(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1537: in _import_importable_package_submodules
submodule = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2274: in _safe_import_hook
self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1288: in import_hook
for target_submodule in self._import_importable_package_submodules(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1537: in _import_importable_package_submodules
submodule = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2274: in _safe_import_hook
self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1288: in import_hook
for target_submodule in self._import_importable_package_submodules(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1537: in _import_importable_package_submodules
submodule = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2274: in _safe_import_hook
self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1288: in import_hook
for target_submodule in self._import_importable_package_submodules(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1537: in _import_importable_package_submodules
submodule = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1249: in import_hook
target_package, target_module_partname = self._find_head_package(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1428: in _find_head_package
target_package = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1249: in import_hook
target_package, target_module_partname = self._find_head_package(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1428: in _find_head_package
target_package = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1249: in import_hook
target_package, target_module_partname = self._find_head_package(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1428: in _find_head_package
target_package = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2274: in _safe_import_hook
self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1288: in import_hook
for target_submodule in self._import_importable_package_submodules(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1537: in _import_importable_package_submodules
submodule = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2274: in _safe_import_hook
self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1288: in import_hook
for target_submodule in self._import_importable_package_submodules(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1537: in _import_importable_package_submodules
submodule = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1249: in import_hook
target_package, target_module_partname = self._find_head_package(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1428: in _find_head_package
target_package = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2274: in _safe_import_hook
self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1288: in import_hook
for target_submodule in self._import_importable_package_submodules(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1537: in _import_importable_package_submodules
submodule = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2274: in _safe_import_hook
self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1288: in import_hook
for target_submodule in self._import_importable_package_submodules(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1537: in _import_importable_package_submodules
submodule = self._safe_import_module(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:437: in _safe_import_hook
ret_modules = super()._safe_import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2065: in _safe_import_hook
target_modules = self.import_hook(
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1262: in import_hook
submodule = self._safe_import_module(head, mname, submodule)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:502: in _safe_import_module
return super()._safe_import_module(module_basename, module_name, parent_package)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:1809: in _safe_import_module
self._process_imports(n)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/lib/modulegraph/modulegraph.py:2608: in _process_imports
target_modules = self._safe_import_hook(*import_info, **kwargs)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:452: in _safe_import_hook
self._find_all_excluded_imports(ret_module.identifier)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/analysis.py:356: in _find_all_excluded_imports
excluded_imports.update(module_hook.excludedimports)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/imphook.py:316: in __getattr__
self._load_hook_module()
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/depend/imphook.py:383: in _load_hook_module
self._hook_module = importlib_load_source(self.hook_module_name, self.hook_filename)
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/compat.py:610: in importlib_load_source
mod_loader.exec_module(mod)
<frozen importlib._bootstrap_external>:995: in exec_module
???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
???
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/hook-PyQt6.py:15: in <module>
ensure_single_qt_bindings_package("PyQt6")
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
qt_bindings = 'PyQt6'
def ensure_single_qt_bindings_package(qt_bindings):
# For the lack of better alternative, use CONF structure. Note that this enforces single bindings for the whole
# spec file instead of individual Analysis instances!
from PyInstaller.config import CONF
seen_qt_bindings = CONF.get("_seen_qt_bindings")
if seen_qt_bindings is None:
CONF["_seen_qt_bindings"] = qt_bindings
elif qt_bindings != seen_qt_bindings:
# Raise SystemExit to abort build process
> raise SystemExit(
"Aborting build process due to attempt to collect multiple Qt bindings packages: attempting to run hook "
f"for {qt_bindings!r}, while hook for {seen_qt_bindings!r} has already been run! PyInstaller does not "
"support multiple Qt bindings packages in a frozen application - either ensure that the build environment "
"has only one Qt bindings package installed, or exclude the extraneous bindings packages via the module "
"exclusion mechanism (--exclude command-line option, or excludes list in the spec file)."
)
E SystemExit: Aborting build process due to attempt to collect multiple Qt bindings packages: attempting to run hook for 'PyQt6', while hook for 'PyQt5' has already been run! PyInstaller does not support multiple Qt bindings packages in a frozen application - either ensure that the build environment has only one Qt bindings package installed, or exclude the extraneous bindings packages via the module exclusion mechanism (--exclude command-line option, or excludes list in the spec file).
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/utils/hooks/qt/__init__.py:1341: SystemExit
----------------------------- Captured stdout call -----------------------------
------- Starting build. -------
----------------------------- Captured stderr call -----------------------------
------- Starting build. -------
------------------------------ Captured log call -------------------------------
INFO PyInstaller.__main__:__main__.py:191 PyInstaller: 6.10.0, contrib hooks: unknown
INFO PyInstaller.__main__:__main__.py:192 Python: 3.12.7
INFO PyInstaller.__main__:__main__.py:193 Platform: Linux-6.10.11-amd64-x86_64-with-glibc2.40
INFO PyInstaller.__main__:__main__.py:194 Python environment: /usr
INFO PyInstaller.__main__:__main__.py:64 wrote /tmp/pytest-of-soren/pytest-0/test_scipy_onedir_scipy_fft_0/test_source.spec
INFO PyInstaller.building.build_main:build_main.py:486 Module search paths (PYTHONPATH):
['None',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/unit',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/test_hooks',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build',
'/<<PKGBUILDDIR>>/debian/python3-pyinstaller/usr/lib/python3.12/dist-packages',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build',
'/usr/lib/python312.zip',
'/usr/lib/python3.12',
'/usr/lib/python3.12/lib-dynload',
'/usr/local/lib/python3.12/dist-packages',
'/usr/lib/python3/dist-packages',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build',
'/usr/lib/python3/dist-packages/setuptools/_vendor',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build',
'/tmp/pytest-of-soren/pytest-0/test_scipy_onedir_scipy_fft_0',
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/tests/functional/test_hooks/modules']
INFO PyInstaller.building.datastruct:datastruct.py:169 checking Analysis
INFO PyInstaller.building.datastruct:datastruct.py:173 Building Analysis because Analysis-128.toc is non existent
INFO PyInstaller.building.build_main:build_main.py:637 Running Analysis Analysis-128.toc
INFO PyInstaller.building.build_main:build_main.py:638 Target bytecode optimization level: 0
INFO PyInstaller.depend.analysis:analysis.py:939 Reusing cached module dependency graph...
INFO PyInstaller.depend.analysis:analysis.py:121 Caching module graph hooks...
INFO PyInstaller.building.build_main:build_main.py:667 Looking for Python shared library...
INFO PyInstaller.building.build_main:build_main.py:672 Using Python shared library: /lib/x86_64-linux-gnu/libpython3.12.so
INFO PyInstaller.building.build_main:build_main.py:697 Analyzing /tmp/pytest-of-soren/pytest-0/test_scipy_onedir_scipy_fft_0/test_source.py
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-scipy.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-numpy.py' from '/usr/lib/python3/dist-packages/numpy/_pyinstaller'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-pickle.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-difflib.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-heapq.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-multiprocessing.util.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-xml.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-platform.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-sysconfig.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-xml.etree.cElementTree.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-typing_extensions.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-packaging.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-packaging.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-pygments.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-tomli.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.utils.hooks.setuptools:setuptools.py:241 Setuptools: 'tomli' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.tomli'!
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-setuptools.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-distutils.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-jaraco.text.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.utils.hooks.setuptools:setuptools.py:241 Setuptools: 'jaraco.text' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.jaraco.text'!
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-importlib_resources.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.utils.hooks.setuptools:setuptools.py:241 Setuptools: 'importlib_resources' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.importlib_resources'!
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-zipp.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-jaraco.functools.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-more_itertools.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-jaraco.context.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-backports.tarfile.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.utils.hooks.setuptools:setuptools.py:241 Setuptools: 'backports.tarfile' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.backports.tarfile'!
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-importlib_metadata.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.utils.hooks.setuptools:setuptools.py:241 Setuptools: 'importlib_metadata' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.importlib_metadata'!
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-pkg_resources.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-platformdirs.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-wheel.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-scipy.special._ufuncs.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-scipy.linalg.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-scipy.sparse.csgraph.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-scipy.special._ellip_harm_2.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.analysis:analysis.py:304 Processing module hooks (post-graph stage)...
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-autocommand.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-typeguard.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PIL.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PIL.Image.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-xml.dom.domreg.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PIL.ImageFilter.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-matplotlib.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.analysis:analysis.py:477 Processing pre-safe-import-module hook 'hook-gi.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks/pre_safe_import_module'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-matplotlib.backends.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-_tkinter.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-wcwidth.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-sqlite3.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PyQt5.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PyQt5.QtCore.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
WARNING PyInstaller.utils.hooks.qt:__init__.py:476 QtLibraryInfo(PyQt5): could not find translations with base name 'qt'! These translations will not be collected.
WARNING PyInstaller.utils.hooks.qt:__init__.py:476 QtLibraryInfo(PyQt5): could not find translations with base name 'qtbase'! These translations will not be collected.
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PyQt5.QtWidgets.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PyQt5.QtGui.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
INFO PyInstaller.depend.imphook:imphook.py:381 Processing standard module hook 'hook-PyQt6.py' from '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pyinstaller/build/PyInstaller/hooks'
Removing all the Qt packages except PySide6 brings me to:
= 22 failed, 1000 passed, 292 skipped, 24 xfailed, 1 xpassed, 17 warnings in 3135.90s (0:52:15) =
Hmm, the hooks should be preventing both PyQt5 and PyQt6 from being collected when Qt API is not explicitly specified...
Can you provide reproduction steps for this setup, so I can look into what is going wrong there?
And/or can you reproduce these test failures outside of the package build system?
Presumably you have all python packages (pytest, PyQt5, PyQt6, matplotlib, scipy) already installed via apt, so you can create a virtual environment with --system-site-packages (e.g., python3 -m venv --system-site-packages test-venv) and then install only PyInstaller in this virtual environment (via pip install), and run the test suite (pytest needs to be invoked as python3 -m pytest ... for PyInstaller from venv to be picked up).
I apologize for taking so long to respond. Up until now I have been building in a test environment on my own machine. But I thought it might make this process easier if I built these using the CI on salsa.debain.org. Salsa is Debian's GitLab instance. Their CI is not Debian's official build environment, but it is designed the same way.
Here is the build log with only PySide6:
https://salsa.debian.org/soren/python-pyinstaller/-/jobs/6423177
Here is the log with all the Qt options:
https://salsa.debian.org/soren/python-pyinstaller/-/jobs/6432883
The build environment is mostly controlled by the control and rules files.
https://salsa.debian.org/soren/python-pyinstaller/-/blob/main/debian/control?ref_type=heads
https://salsa.debian.org/soren/python-pyinstaller/-/blob/main/debian/rules?ref_type=heads
Let me know if you want to go through the effort of setting up a build environment on your own machine and I can provide you with instructions.
Thanks, that list of packages to install in control file is exactly what I was looking for!
The Qt mess is due to the fact that you are running tests without hooks from pyinstaller-hooks-contrib package (which would have been installed as dependency of PyInstaller if it was installed via pip install PyInstaller). Therefore, you do not have this hook for IPython, which blocks IPython from pulling in all Qt (and other) backends.
The lack of pyinstaller-hooks-contrib package is also the cause of failure for this test:
FAILED tests/unit/test_pyimodulegraph.py::test_metadata_searching - importlib.metadata.PackageNotFoundError: No package metadata was found for pyinstaller-hooks-contrib
These two
FAILED tests/functional/test_libraries.py::test_zeep[onedir] - Failed: Running exe /tmp/pytest-of-salsaci/pytest-0/test_zeep_onedir_0/dist/test_source/test_source failed with return-code 1.
FAILED tests/functional/test_libraries.py::test_zeep[onefile] - Failed: Running exe /tmp/pytest-of-salsaci/pytest-0/test_zeep_onefile_0/dist/test_source failed with return-code 1.
are failing with
[PYI-138381:DEBUG] LOADER: running test_source.py
Traceback (most recent call last):
File "test_source.py", line 4, in <module>
File "PyInstaller/loader/pyimod02_importers.py", line 378, in exec_module
File "zeep/__init__.py", line 1, in <module>
File "PyInstaller/loader/pyimod02_importers.py", line 378, in exec_module
File "zeep/client.py", line 6, in <module>
File "PyInstaller/loader/pyimod02_importers.py", line 378, in exec_module
File "zeep/transports.py", line 11, in <module>
File "PyInstaller/loader/pyimod02_importers.py", line 378, in exec_module
File "zeep/utils.py", line 5, in <module>
File "src/lxml/etree.pyx", line 74, in init lxml.etree
ImportError: cannot import name _elementpath
and the hook for lxml is also in the pyinstaller-hooks-contrib.
All in all, the lack of hooks from pyinstaller-hooks-contrib will result in subpar user experience and unnecessary bug reports to us, so I suggest you package them first and make sure they are installed as dependency of pyinstaller package as well as build dependency for running the tests.
These two
FAILED tests/functional/test_basic.py::test_user_preferred_locale[onedir] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-salsaci/pytest-0/test_user_preferred_locale_one0/dist/test_source/test_source', 'en_US.UTF-8']' returned non-zero exit status 1.
FAILED tests/functional/test_basic.py::test_user_preferred_locale[onefile] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-salsaci/pytest-0/test_user_preferred_locale_one1/dist/test_source', 'en_US.UTF-8']' returned non-zero exit status 1.
are probably due to lack of corresponding locales being available on the system.
For example, we have this on our Ubuntu runners:
https://github.com/pyinstaller/pyinstaller/blob/2996af6ba7615b2b5b822252b51e4d39d1c76f2e/.github/workflows/ci.yml#L83-L102
The pytz test failures
FAILED tests/functional/test_libraries.py::test_pytz[onedir] - Failed: Running exe /tmp/pytest-of-salsaci/pytest-0/test_pytz_onedir_0/dist/test_source/test_source failed with return-code 1.
FAILED tests/functional/test_libraries.py::test_pytz[onefile] - Failed: Running exe /tmp/pytest-of-salsaci/pytest-0/test_pytz_onefile_0/dist/test_source failed with return-code 1.
are due to
[PYI-126912:DEBUG] LOADER: running test_source.py
Traceback (most recent call last):
File "test_source.py", line 4, in <module>
File "pytz/__init__.py", line 201, in timezone
pytz.exceptions.UnknownTimeZoneError: 'US/Eastern'
There indeed does not seem to be US/Eastern in /usr/share/zoneinfo (while there it exists, for example, on my Fedora linux system). Furthermore, it seems to be present on debian bookworm, but not on trixie...
The zope failures seem to be due to /usr/lib/python3/dist-packages/zope/__init__.py using
__import__('pkg_resources').declare_namespace(__name__)
which will require a hook for zope with hidden import for pkg_resources (due to PyInstaller's import analysis not pickIng up __import__()). I'm a bit surprised we don't have a hook for this already, but then again, PyPI wheels seem to be using -nspkg.pth + PEP420 namespace package instead of the pkg_resources-based approach.
gevent also uses zope, so gevent tests are failing for the same reason.
And I think test_Qt_QtQml[PySide6-*] tests require qml6-module-qtquick-templates to be apt-installed.
Thank you for the excellent help.
I will package pyinstaller-hooks-contrib. Then I will circle back to look at any remaining issues with the pyinstaller tests.
I will add the locales package.
My Debian testing system (which will become Trixie) has a /usr/share/zoneinfo/US/Eastern. It looks like I need the tzdata package.
https://packages.debian.org/search?searchon=contents&keywords=Eastern&mode=path&suite=testing&arch=any
I was able to resolve most of the Qt problems with this updated debian/control by manually specifying a number of the qml6-module packages.
https://salsa.debian.org/soren/python-pyinstaller/-/blob/main/debian/control?ref_type=heads
BTW, PyInstaller has runtime dependencies on binutils and libpython3.x.so which I think you're missing. (I'm guessing their absence would masked by build dependencies.)
The Debian build system automatically calculates runtime dependencies. It is controlled by these lines in debian/control:
Depends: ${misc:Depends},
${python3:Depends},
${shlibs:Depends}
A previous build turned these into:
Depends: python3-altgraph, python3-importlib-metadata | python3-supported-min (>= 3.10), python3-packaging, python3-pkg-resources, python3:any, libc6 (>= 2.34), zlib1g (>= 1:1.1.4)
binutils gets pulled in as a dependency of python3:any.
However, I appreciate the headsup as sometimes the build system doesn't detect everything needed at runtime, so I often have to manually specify some runtime dependencies.
I am still in the process of packaging PyInstaller for Debian. I have it building correctly for Python 3.12 and 3.13. But now I am having problems with the autopkgtest CI.
I receive multiple errors like this:
self = <PyInstaller.building.api.EXE object at 0x7fa9611c6990>
def assemble(self):
# On Windows, we used to append .notanexecutable to the intermediate/temporary file name to (attempt to)
# prevent interference from anti-virus programs with the build process (see #6467). This is now disabled
# as we wrap all processing steps that modify the executable in the `_retry_operation` helper; however,
# we keep around the `build_name` variable instead of directly using `self.name`, just in case we need
# to re-enable it...
build_name = self.name
logger.info("Building EXE from %s", self.tocbasename)
if os.path.exists(self.name):
if os.path.isdir(self.name):
_rmtree(self.name) # will prompt for confirmation if --noconfirm is not given
else:
os.remove(self.name)
if not os.path.exists(os.path.dirname(self.name)):
os.makedirs(os.path.dirname(self.name))
bootloader_exe = self.exefiles[0][1] # pathname of bootloader
if not os.path.exists(bootloader_exe):
> raise SystemExit(_MISSING_BOOTLOADER_ERRORMSG)
E SystemExit: Fatal error: PyInstaller does not include a pre-compiled bootloader for your
E platform. For more details and instructions how to build the bootloader see
E <https://pyinstaller.readthedocs.io/en/stable/bootloader-building.html>
https://salsa.debian.org/soren/python-pyinstaller/-/jobs/6680139/viewer#L71143
My guess is that for some reason the PyInstaller tests think they are running under Windows in the autopkgtest environment instead of in Linux.
The results of all the build and test steps can be seen at:
https://salsa.debian.org/soren/python-pyinstaller/-/pipelines/772011
The debian/control file handles the setup of the build environment, where the tests complete successfully.
https://salsa.debian.org/soren/python-pyinstaller/-/blob/main/debian/control?ref_type=heads
The debian/tests/control file handles the setup of the autopkgtest environment, where the tests do not complete successfully.
https://salsa.debian.org/soren/python-pyinstaller/-/blob/main/debian/tests/control?ref_type=heads
Can you confirm if I am reading that error message and it thinks it is running under Windows? If so, can you explain the logic the system uses to determine if it is running under Windows?
Can you confirm if I am reading that error message and it thinks it is running under Windows?
I don't think that's the case
------------------------------ Captured log call ------------------------------- INFO PyInstaller.__main__:__main__.py:191 PyInstaller: 6.11.1, contrib hooks: unknown INFO PyInstaller.__main__:__main__.py:192 Python: 3.13.0 INFO PyInstaller.__main__:__main__.py:193 Platform: Linux-6.11.5-amd64-x86_64-with-glibc2.40 INFO PyInstaller.__main__:__main__.py:194 Python environment: /usr
assemble() seems to be failing due to missing bootloader executable, and while there is a comment about Windows at the very top, it has nothing to do with missing bootloader.
My guess would be that the tests are being ran with PyInstaller instance that does not have a bootloader, considering the path indicated by:
INFO PyInstaller.building.api:api.py:736 Bootloader /tmp/autopkgtest-lxc.ntrktcnj/downtmp/build.KMH/src/PyInstaller/bootloader/Linux-64bit-intel/run_d
Thank you. That was very helpful. Based on that information, I think the root cause of the problem is that two copies of PyInstaller are available in the autopkgtest environment, one of them is the source tree (which contains the tests) and the other is the Debian package. The bootloader was pruned from the source tree and generated during the build process, but it would appear that the tests are still looking for it in the source tree instead of in /usr/lib/python3/dist-packages/PyInstaller/bootloader/Linux-64bit-intel/.
I should be able to work around this by copying or linking the bootloader into the source tree before the tests. Alternatively, I can force a full build of the package each time autopkgtest is run, but that is a last resort because it needlessly wastes CI CPU cycles.
Is the source directory being prepended to sys.path/PYTHONPATH? Our own CI also installs PyInstaller without deleting the source copy and that manages to pick up the site-packages copy without fuss.
I am uncertain. I have never had to plumb the depths of autopkgtest because as it has just worked on everything else I have ever packaged. Granted, PyInstaller is a very complicated code base, so it isn't surprising that it requires a bit more work.
FYI, I submitted PyInstaller to the NEW queue, which requires manual review and takes between a couple of days and several months depending on when one of the ftpmasters has time to review it.
https://ftp-master.debian.org/new.html
Once it passes NEW, it will become part of Debian. At that point, I will start working on pyinstaller-hooks-contrib.
It took longer than usual to make it through the NEW queue, but Pyinstaller is now in Debian, meaning it will be part of the next stable release this summer. At any point, you can see a dashboard of Pyinstaller's status in Debian at:
https://tracker.debian.org/pkg/pyinstaller
There is a regression in the tests for PyQt6 and PySide6.
FAILED tests/functional/test_qt.py::test_Qt_QtWebEngineWidgets_PyQt6[onedir]
FAILED tests/functional/test_qt.py::test_Qt_QtWebEngineWidgets_PyQt6[onefile]
FAILED tests/functional/test_qt.py::test_Qt_QtWebEngineQuick_PyQt6[onedir] - ...
FAILED tests/functional/test_qt.py::test_Qt_QtWebEngineQuick_PyQt6[onefile]
FAILED tests/functional/test_qt.py::test_Qt_QtWebEngineWidgets_PySide6[onedir]
FAILED tests/functional/test_qt.py::test_Qt_QtWebEngineWidgets_PySide6[onefile]
FAILED tests/functional/test_qt.py::test_Qt_QtWebEngineQuick_PySide6[onedir]
FAILED tests/functional/test_qt.py::test_Qt_QtWebEngineQuick_PySide6[onefile]
https://salsa.debian.org/python-team/packages/pyinstaller/-/jobs/8378811#L5700
This regression coincides with the update of PySide6 from 6.8.2.1 to 6.9.2, but I do not know if that is the cause.
https://tracker.debian.org/pkg/pyside6
There aren't any changes in the time period for PyQt6, so I am not sure why they are failing.
https://tracker.debian.org/pkg/pyqt6
There have also been recent GCC 15 and CMake 4 transitions, which have caused a large number of bugs in Debian, but I am not certain these transitions are related.
The ultimate error message is:
E Failed: Running exe /tmp/pytest-of-sbuild/pytest-0/test_Qt_QtWebEngineQuick_PySid1/dist/test_source failed with return-code -11.
https://salsa.debian.org/python-team/packages/pyinstaller/-/jobs/8378811#L5453
The root cause might be these previous errors, but am not certain if these actually matter to the tests:
[191850:191891:1001/002402.560151:ERROR:bus.cc(407)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
[191850:191894:1001/002402.577492:ERROR:gl_surface_egl.cc(303)] No suitable EGL configs found.
[191850:191894:1001/002402.577507:ERROR:gl_context_egl.cc(159)] Failed to get config for surface 0
[191850:191894:1001/002402.577516:ERROR:gl_surface_egl.cc(303)] No suitable EGL configs found.
[191850:191894:1001/002402.577518:ERROR:gl_surface_egl.cc(1018)] No suitable EGL configs found for initialization.
[191850:191894:1001/002402.577521:ERROR:gpu_info_collector.cc(92)] gl::GLContext::CreateOffscreenGLSurface failed
[191850:191894:1001/002402.577523:ERROR:gpu_info_collector.cc(602)] Could not create surface for info collection.
[191850:191894:1001/002402.578123:ERROR:gl_surface_egl.cc(303)] No suitable EGL configs found.
[191850:191894:1001/002402.578127:ERROR:gl_surface_egl.cc(1018)] No suitable EGL configs found for initialization.
[191850:191894:1001/002402.578159:ERROR:gl_surface_egl.cc(303)] No suitable EGL configs found.
[191850:191894:1001/002402.578161:ERROR:gl_surface_egl.cc(1018)] No suitable EGL configs found for initialization.
[191850:191894:1001/002402.578163:ERROR:gpu_info_collector.cc(92)] gl::GLContext::CreateOffscreenGLSurface failed
[191850:191894:1001/002402.578165:ERROR:gpu_info_collector.cc(602)] Could not create surface for info collection.
The build environment is:
https://salsa.debian.org/python-team/packages/pyinstaller/-/blob/debian/master/debian/control?ref_type=heads
Any guidance would be much appreciated.
I can reproduce this in my sid VM, and it seems that python3-pytest-xvfb is somehow involved. If I remove it and manually set up Xvfb instead (i.e., run it and export DISPLAY like we do on our CI), the issue with missing EGL config seems to go away...
Looks like the problem is that pytest-xvfb uses 16-bit color depth by default; if I change it to 24-bit, it works with pytest-xvfb as well. (Perhaps QtWebEngine in 6.9.x changed requirements w.r.t. color depth?)
Unfortunately, this seems to be an ini-only setting; so you have to add xvfb_colordepth=24 to PyInstaller's pytest.ini.
Thanks for the very fast troubleshooting.
With each Debian update, I am trying to enable at least one of the tests that still isn't working. Currently, I am trying to get the PyQt5 tests working. When I include the PyQt5 packages in the build environment, I receive the following error:
QQmlApplicationEngine failed to load component
<Unknown File>:4:5: module "QtWebEngine" is not installed
<Unknown File>:3:5: module "QtQuick.Window" is not installed
<Unknown File>:4:5: module "QtWebEngine" is not installed
<Unknown File>:3:5: module "QtQuick.Window" is not installed
Traceback (most recent call last):
File "test_source.py", line 71, in <module>
RuntimeError: No root objects loaded from QML!
https://salsa.debian.org/python-team/packages/pyinstaller/-/jobs/8388856#L5321
The build environment installs the python3-pyqt5.qtquick and python3-pyqt5.qtwebengine packages.
https://salsa.debian.org/python-team/packages/pyinstaller/-/blob/debian/master/debian/control?ref_type=heads#L36-38
I assume that the root of the problem is that either there is some other python3-pyqt5 package I need to include so that everything can work together or there is some problem with the contents of these packages in Debian that makes it so the test doesn't want to work with them.
Any guidance you can provide would be appreciated.
Looks like the missing files are provided by qml-module-qtquick-controls and qml-module-qtwebengine.