首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pywt `_ctw`模块上的Pyinstaller `_ctw`

pywt `_ctw`模块上的Pyinstaller `_ctw`
EN

Stack Overflow用户
提问于 2017-02-02 09:24:27
回答 2查看 4.8K关注 0票数 4

在用Pyinstaller编译程序时,Pywt没有正确导入_cwt模块。我验证了_cwt.py存在于我的pywt根中(在路径上的站点包中),_cwt.pydpywt\_extensions dir中。我可以成功地从Python导入pywt。下面是一个演示ImportError跟踪的最小(非)工作示例。

程序pywt_test.py

代码语言:javascript
复制
# -*- 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规范文件pywt_test.spec

代码语言:javascript
复制
 # -*- 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编译命令:pyinstaller pywt_test.spec

ran命令:pywt_test.exe

pywt_error_log.txt含量

代码语言:javascript
复制
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

我尝试将_cwt添加到pathex,隐藏导入等。没有任何更改错误。

如何使用Pyinstaller加载_cwt和整个pywt包?

供参考的版本:

  • Pywt: 0.5.1
  • Pyinstaller: 3.2.1
  • Python: 2.7.12 64位在Windows 7 64位(Anaconda)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-18 12:18:59

只需将其添加到隐藏的导入:

代码语言:javascript
复制
 ...
 hiddenimports=['pywt._extensions._cwt'],
 ...
票数 7
EN

Stack Overflow用户

发布于 2018-09-04 16:19:42

正如我们所提到的,添加隐藏的导入是有效的。为了避免将来出现这样的错误,可以添加一个文件。

‘\PyInstaller\hooks\钩子-pywt.py’

用绳子:

hiddenimports=['pywt._extensions._cwt']

我只需获取一个现有文件,如‘\PyInstaller\hooks\钩子-patsy.py’,将隐藏导入行更改为上面的一行,并将其保存为钩子-pywt.py。在更新您的PyInstaller之前,这应该是有效的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41998403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档