如果将scipy冻结到具有cx-Freeze的可执行文件中,则会出错

时间:2017-03-13 08:31:13

标签: python scipy cx-freeze

目前我正面临着关于scipy和cx-Freeze的问题。

Windows 7 Enterprise (64-Bit);
Python 3.5.2|Anaconda 4.2.0 (64-bit);
scipy 0.18.1;
cx-Freeze 5.0.1;

我想将python脚本冻结为可执行文件。您可以在下面找到源代码和冻结脚本。

main.py

import scipy

if __name__ == '__main__':
    print('Test dirstribution methods!')

这是main.py文件。

setup.py

import sys
from cx_Freeze import *

packages = ['numpy']
excludes = ['tkinter']

distTest_Target = Executable(
    script = "main.py",
    base = "Console",
    shortcutName="distTest",
    targetName = "distTest.exe"
)

build_exe_options  = {
    "packages": packages,
    "excludes":excludes
}

setup(name='distTest',
    version='1.0.0',
    description='distTest (64-bit)',
    options = {"build_exe": build_exe_options},
    executables=[distTest_Target]
)

构建过程执行没有错误,但如果我尝试启动exe,我会收到以下错误: Figure: Error during execution of exe

如果我尝试将'scipy'添加到像packages = ['numpy','scipy']这样的包列表中,那么在构建过程中会出现另一个错误:Figure: scipy ImportError

有人知道那里有什么问题吗?预先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

安装最新版本的Anaconda(4.3.1)并在cx_freeze包中编辑hooks.py:

finder.IncludePackage("scipy.lib")

替换为:

finder.IncludePackage("scipy._lib")

解决了这个问题。