#python #python-3.x #pyinstaller #pyside2
#python #python-3.x #pyinstaller #pyside2
Вопрос:
У меня есть рабочее приложение python (3.6.8) и Pyside (5.12.0).
Ранее мне удавалось создать один файл exe, и он работал нормально.
Но после обновления Pyside до 5.12.2 я не могу запустить приложение. ошибка ModuleNotFoundError: нет модуля с именем ‘typing’
У меня уже установлен модуль ввода (pip install typing). Я попытался удалить pyside (5.12.2) и переустановить pyside (5.12.0)
но все равно я получаю ту же ошибку. Вот ошибка.
Problem importing shibokensupport:
No module named 'typing'
Traceback (most recent call last):
File "(builtin)", line 93, in ensure_shibokensupport
File "(builtin)", line 133, in bootstrap
File "C:UsersLS0020AppDataLocalTempembedded.u2j069ui.zipshibokensupportsignatureloader.py", line 156, in <module>
import typing
ModuleNotFoundError: No module named 'typing'
sys.path:
C:UsersLS0020AppDataLocalTempembedded.u2j069ui.zip
C:UsersLS0020AppDataLocalTemp_MEI101642base_library.zip
C:UsersLS0020AppDataLocalTemp_MEI101642
Traceback (most recent call last):
File "(builtin)", line 93, in ensure_shibokensupport
File "(builtin)", line 133, in bootstrap
File "C:UsersLS0020AppDataLocalTempembedded.u2j069ui.zipshibokensupportsignatureloader.py", line 156, in <module>
ModuleNotFoundError: No module named 'typing'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "(builtin)", line 133, in bootstrap
File "contextlib.py", line 99, in __exit__
File "(builtin)", line 102, in ensure_shibokensupport
SystemExit: -1
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "(builtin)", line 147, in bootstrap
UnboundLocalError: local variable 'loader' referenced before assignment
SystemError: could not initialize part 2
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "demo.py", line 1, in <module>
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "c:program filespython36libsite-packagesPyInstallerloaderpyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "site-packagesPySide2__init__.py", line 51, in <module>
File "site-packagesPySide2__init__.py", line 21, in _setupQtDirectories
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "c:program filespython36libsite-packagesPyInstallerloaderpyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
SystemError: PyEval_EvalFrameEx returned a result with an error set
[7584] Failed to execute script demo
Ответ №1:
У меня была точно такая же проблема с cx_freeze. После сборки приложения cx_freeze и запуска я получил ошибку:
Problem importing shibokensupport:
No module named 'typing'
Traceback (most recent call last):
File "(builtin)", line 93, in ensure_shibokensupport
File "(builtin)", line 133, in bootstrap
File "/tmp/embedded.mp0z2vy0.zip/shibokensupport/signature/loader.py", line 156, in <module>
import typing
Я добавил typing
вручную пакеты, которые необходимо включить в cx_freeze setup.py
:
# -*- coding: utf-8 -*-
import sys
from cx_Freeze import setup, Executable
options = {
'build_exe': {
'packages': [
'os',
'typing'
],
'excludes': [
'tkinter'
]
}
}
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
executables = [
Executable('qt_test1.py', base=base)
]
setup(
name='qt_test1',
version='0.1',
description='My GUI application!',
options=options,
executables=executables
)
Это делает это. Он запускается сейчас.
Это означает, что для PyInstaller вы должны вызывать его таким образом:
$ pyinstaller your_app.py --hidden-import="typing"
На самом деле, я не знаю, есть ли лучший способ для PyInstaller явно добавлять модули в процесс сборки.