Pyinstaller не может импортировать pylsd при создании exe-файла - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь создать exe-файл для программы, и я использовал

    pyinstaller --onefile filename.py 

для создания exe-файла.

мой код использует pylsd, но pyinstaller не может импортировать пакет,когда я пытаюсь запустить exe-файл, он показывает:

Traceback (most recent call last):
File "final_lines.py", line 4, in <module>
   from pylsd.lsd import lsd
File "c:\users\yash.sharma\appdata\local\programs\python\python36\lib\site-
packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)
File "site-packages\pylsd\__init__.py", line 8, in <module>
File "c:\users\yash.sharma\appdata\local\programs\python\python36\lib\site-
packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\pylsd\lsd.py", line 8, in <module>
File "c:\users\yash.sharma\appdata\local\programs\python\python36\lib\site-
packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\pylsd\bindings\__init__.py", line 8, in <module>
File "c:\users\yash.sharma\appdata\local\programs\python\python36\lib\site-
packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\pylsd\bindings\lsd_ctypes.py", line 56, in <module>
ImportError: Cannot load dynamic library. Did you compile LSD?
[13252] Failed to execute script final_lines

final_lines.py - это имя моего файла кода.Кто-нибудь знает, как эта проблема может быть решена.Я попытался добавить pylsd к скрытому импорту в файле спецификации и попытался создать exe, используя

  pyinstaller --onefile filename.spec

, это не работает.

1 Ответ

0 голосов
/ 12 сентября 2018

Я сгенерировал файл спецификации для своей программы с помощью команды:

pyi-makespec --onefile final_lines.py

и добавил двоичные файлы lsd.dll, а затем сгенерировал исполняемый файл с помощью этой команды:

pyinstaller --onefile final_lines.spec

финальная версия spec-файла выглядела так:

 # -*- mode: python -*-

block_cipher = None


a = Analysis(['final_lines.py'],
    pathex=['C:\\Users\\yash.sharma\\Desktop\\text\\obj'],
    binaries= [('C:\\Users\\yash.sharma\\AppData\\Local\\Programs\\Python\\Python36\\Lib\\site-packages\\pylsd\\lib\\win32\\x64\\lsd.dll', '.')],
    datas=[],
    hiddenimports=['C:\\Users\\yash.sharma\\AppData\\Local\\Programs\\Python\\Python36\\Lib\\site-packages\\pylsd\\bindings\\lsd_ctypes.py'],
    hookspath=[],
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher)

pyz = PYZ(a.pure, a.zipped_data,
         cipher=block_cipher)

exe = EXE(pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    name='final_lines',
    debug=False,
    strip=False,
    upx=True,
    runtime_tmpdir=None,
    console=True )

мое имя файла кода было final_lines.py. Теперь exe работает нормально. Я не знаю мелких деталей, но оказывается, что вам нужно добавлять файлы .dll отдельно, так как pyinstaller не включает их самостоятельно.

...