Ошибка Pyinstaller после обновления последней версии PySide - PullRequest
3 голосов
/ 03 апреля 2019

У меня есть работающее приложение Python (3.6.8) и Pyside (5.12.0).

Раньше мне удавалось создать один файл exe, и он нормально работал.

Но после обновления Pyside до 5.12.2 я не могу запустить приложение. существует ModuleNotFoundError: нет модуля с именем «typing»

У меня уже установлен модуль набора текста (тип установки pip). Я попытался удалить 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:\Users\LS0020\AppData\Local\Temp\embedded.u2j069ui.zip\shibokensupport\signature\loader.py", line 156, in <module>
    import typing
ModuleNotFoundError: No module named 'typing'
sys.path:
  C:\Users\LS0020\AppData\Local\Temp\embedded.u2j069ui.zip
  C:\Users\LS0020\AppData\Local\Temp\_MEI101642\base_library.zip
  C:\Users\LS0020\AppData\Local\Temp\_MEI101642
Traceback (most recent call last):
  File "(builtin)", line 93, in ensure_shibokensupport
  File "(builtin)", line 133, in bootstrap
  File "C:\Users\LS0020\AppData\Local\Temp\embedded.u2j069ui.zip\shibokensupport\signature\loader.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 files\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\PySide2\__init__.py", line 51, in <module>
  File "site-packages\PySide2\__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 files\python36\lib\site-packages\PyInstaller\loader\pyimod03_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 Ответ

0 голосов
/ 30 апреля 2019

У меня была точно такая же проблема с 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 явно добавить модулив процессе строительства.

...