当我使用依赖于它的另一个库时,我将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}})