我需要提供py2exe才能使用scipy.optimize.bisect?

时间:2019-02-07 00:07:50

标签: python scipy py2exe

当我使用依赖于它的另一个库时,我将scipy引入了我的项目。为了使py2exe正常运行,我不得不对我在setup.py上找到的一些时髦的东西进行

现在我想在我的项目中使用scipy.optimize.bisect。

当我尝试运行可执行文件时,出现一个缺少的模块错误,为此我添加了另一个包含。然后我得到了神秘的东西:

  

文件“ scipy \ optimize_slsqp.pyc”,第10行,位于__load
  ImportError:DLL加载失败:找不到指定的模块。

我不知道缺少什么。

我正在使用Python 2.7,py2exe 0.6.9,scipy 1.2.0。

这是一个MCV示例:

main.py

from scipy.optimize import bisect


def f(t):
    return t**2 - 1


print bisect(f, 0, 2)

setup.py

import os
import sys
from distutils.core import setup

import numpy
import py2exe
import scipy


def dll_paths_fix(m):
    '''Add directory containing a dll file to sys.path'''
    paths = set()
    m_path = m.__path__[0]
    for dirpath, _, filenames in os.walk(m_path):
        for item in filenames:
            if item.endswith('.dll'):
                paths.add(dirpath)

    for path in paths:
        sys.path.append(path)


dll_paths_fix(numpy)
dll_paths_fix(scipy)

existing_includes = ["scipy.sparse.csgraph._validation", "scipy.integrate", "scipy", "scipy.special.*", "scipy.linalg.*"]
new_includes = ["scipy._lib.*"]

setup(
    console=['main.py'],
    options={
        'py2exe': {
            'includes': existing_includes + new_includes}})

0 个答案:

没有答案