简体   繁体   English

Pyinstaller在创建exe文件时无法导入pylsd

[英]Pyinstaller unable to import pylsd while creating exe file

I am trying to create exe file for a program and I used 我正在尝试为程序创建exe文件,我用过

    pyinstaller --onefile filename.py 

to create the exe file. 创建exe文件。

my code uses pylsd but pyinstaller is not able to import the package. 我的代码使用pylsd但pyinstaller无法导入包。 when I try to run the exe file it shows: 当我尝试运行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 is the name of my code file. final_lines.py是我的代码文件的名称。 does anyone know how this problem might be solved. 有谁知道如何解决这个问题。 I have tried adding pylsd to hidden imports in the spec file and tried creating exe using 我已经尝试将pylsd添加到spec文件中的隐藏导入,并尝试使用创建exe

  pyinstaller --onefile filename.spec

this does not work. 这不起作用。

I generated the spec file for my program by using command: 我使用命令为我的程序生成了spec文件:

pyi-makespec --onefile final_lines.py

and added lsd.dll binaries, then generated the exe using this command: 并添加了lsd.dll二进制文件,然后使用此命令生成了exe:

pyinstaller --onefile final_lines.spec

the final version of spec file looked lie this: 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 )

my code-file name was final_lines.py. 我的代码文件名是final_lines.py。 Now the exe works fine. 现在exe工作正常。 I don't know the fine details but it turns out that you have to add .dll files separately as pyinstaller doesn't include them on its own. 我不知道细节,但事实证明你必须单独添加.dll文件,因为pyinstaller不会自己包含它们。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM