2017-02-02 4 views
2

Pywt importiert _cwt Modul nicht korrekt, wenn das Programm mit Pyinstaller kompiliert wird. Ich verifizierte, dass _cwt.py ist in meinem Pywt-Stamm vorhanden (in Site-Pakete auf dem Pfad) und _cwt.pyd ist in der pywt\_extensions dir. Ich kann Pywt erfolgreich von Python importieren. Unten ist ein minimales (nicht) funktionierendes Beispiel zur Veranschaulichung des ImportError Tracebacks.Pyinstaller ImportError auf pywt `_ctw` Modul

Programm pywt_test.py

# -*- coding: utf-8 -*- 
try: 
    import sys, traceback 
    import pywt 
    print pywt.__version__ 
except ImportError: 
    type_, value_, traceback_ = sys.exc_info() 
    e_msg = traceback.format_exception(type_, value_, traceback_) 
    with open('pywt_error_log.txt','w') as f: 
     f.write(''.join(e_msg)) 

Pyinstaller Spec-Datei pywt_test.spec

# -*- mode: python -*- 

block_cipher = None 


a = Analysis(['pywt_test.py'], 
     pathex=['C:\\Users\\user', 'C:\\Users\\user'], 
     binaries=[], 
     datas=[], 
     hiddenimports=[], 
     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='pywt_test', 
     debug=False, 
     strip=False, 
     upx=False, 
     console=True) 

Pyinstall Befehl kompilieren: pyinstaller pywt_test.spec.

Befehl lautete: pywt_test.exe

Inhalt von pywt_error_log.txt:

Traceback (most recent call last): 
    File "pywt_test.py", line 10, in <module> 
    File "c:\users\user\appdata\local\temp\pip-build-3zvqo7\pyinstaller\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module 
    File "site-packages\pywt\__init__.py", line 16, in <module> 
    File "c:\users\user\appdata\local\temp\pip-build-3zvqo7\pyinstaller\PyInstaller\loader\pyimod03_importers.py", line 546, in load_module 
    File "pywt\_extensions\_pywt.pyx", line 1, in init pywt._extensions._pywt (pywt\_extensions\_pywt.c:32588) 
ImportError: No module named _cwt 

versuchte ich _cwt zum pathex Hinzufügen hiddenimports usw. Keine der Fehler ändern. Wie kann ich _cwt und das gesamte pywt-Paket mit Pyinstaller laden?

Versionen als Referenz:

  • Pywt: 0.5.1
  • Pyinstaller: 3.2.1
  • Python: 2.7.12 64-Bit auf 64-Bit-Windows 7 (Anaconda)

Antwort

1

Fügen Sie es einfach zu den versteckten Importen hinzu:

... 
hiddenimports=['pywt._extensions._cwt'], 
... 
Verwandte Themen