【问题标题】:Why do I have "ModuleNotFoundError: No module named 'scipy.special.cython_special'" when I don't even use cython?当我什至不使用 cython 时,为什么会出现“ModuleNotFoundError: No module named 'scipy.special.cython_special'”?
【发布时间】:2020-06-25 17:57:29
【问题描述】:

我使用 pyinstaller 为 python 脚本生成可执行文件,当尝试运行可执行文件时,我收到错误 ModuleNotFoundError: No module named 'scipy.special.cython_special'。我不确定这是从哪里来的,或者如何解决它。我的可执行文件接受一个参数并返回一个列表。任何帮助表示赞赏!

【问题讨论】:

  • 它源自scipy 包,缺少依赖cython_special。我对pyinstaller一无所知,但我的直觉说生成的可执行文件没有scipy,并且它的相关依赖关系正确捆绑。
  • 您必须使用scipyscipy 大量使用 cython 将 python 与已编译的包连接起来。您可能需要安装更完整的“开发”版本 scipy(和其他软件包)。

标签: python cython executable


【解决方案1】:

--hidden-import="scipy.special.cython_special" 添加到您的 pyinstaller 命令中。

【讨论】:

    【解决方案2】:

    我遇到了同样的错误,但不确定是什么原因导致它或为什么 pyinstaller 没有找到该依赖项,但您可以通过将“scipy.special.cython_special”添加到您的 pyinstaller myapp.spec 文件来修复它,例如这个:

    a = Analysis(['/Users/Name/path/to/mystartupfile.py'],
                 pathex=['/Users/Name/...'],
                 binaries=[],
                 datas=[('data')],
                 hiddenimports=['scipy.special.cython_special'],
                 hookspath=['/Users/Name..../hooks'],
                 runtime_hooks=[],
                 excludes=['IPython', 'FixTk', 'tcl', 'tk', '_tkinter', 'tkinter', 'Tkinter'],
                 win_no_prefer_redirects=False,
                 win_private_assemblies=False,
                 cipher=block_cipher,
                 noarchive=False)
    

    【讨论】:

    • 感谢您的回答!我将该行添加到我的规范文件中,但我仍然收到相同的错误..
    【解决方案3】:

    我在冻结使用 scipy 版本 1.5.0 的程序后出现此错误,但我将版本更改为 1.4.1(我在早期的虚拟环境中使用过)并且错误消失了。

    【讨论】:

    • 这行得通。这样做,然后解决 pyinstaller 抛出的下一个错误。
    • @azazelspeaks 这完全是垃圾,我在 pyinstaller 错误上花了 1 天时间,但我还有更多!应该有一个来自 python 的官方包来处理所有这些
    【解决方案4】:

    我刚刚解决了这个问题,方法是将MyEnv>Lib>site-packages>scipy>special中的cython_special.cp37-win_amd64.pyd文件复制到编译好的pyinstaller程序的同一目录中。

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题,原来我使用的是 Pyinstaller 不支持的 Python 3.8。尝试使用 3.7。

      【讨论】:

      • 我从 Python 3.8 降级到 Python 3.7,但这对我没有帮助。根据@profTC 提供的答案,我确实发现将 scipy 降级到 1.4.1 版后问题就消失了。
      【解决方案6】:

      我也有这个问题。

      scipy 包降级到1.4.1 解决了@profTC said 的问题。

      或者,可以升级到PyInstaller 4.0,在那里他们添加了一个新的钩子文件来处理这个问题。见:https://pyinstaller.readthedocs.io/en/v4.0/CHANGES.html#hooks

      另一种解决方案是使用 PyInstaller 直接复制hook file 并将其作为additional hook when building 包含在内。

      【讨论】:

        猜你喜欢
        • 2020-04-16
        • 1970-01-01
        • 2020-08-18
        • 1970-01-01
        • 2020-08-24
        • 1970-01-01
        • 2022-10-22
        • 2020-01-18
        • 2022-12-27
        相关资源
        最近更新 更多