Я ввел scipy в свой проект, когда использовал другую библиотеку, которая зависит от него.Мне пришлось сделать что-то интересное, что я нашел в интернете в моем файле setup.py, чтобы py2exe работал правильно.
Теперь я хочу использовать 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}})