py2exe и assimulo - нет модуля с именем алгебраический
Я пытаюсь построить исполняемый файл, используя py2exe на программном обеспечении, которое использует библиотеку assimulo (решатель дифференциальных уравнений). Проблема заключается в том, что во время выполнения я получаю:
ImportError: нет модуля с именем алгебраический
Точное сообщение об ошибке:
Traceback (most recent call last):
File "main.py", line 89, in <module>
from simulation.simulation import Simulation
File "simulation\simulation.pyc", line 18, in <module>
manages all the action linked to a simulation, like running, saving, replay, etc...
File "solver\assimuloSolver.pyc", line 7, in <module>
Explicit solver to choose in the list of assimulo solvers:
File "assimulo\solvers\__init__.pyc", line 25, in <module>
File "assimulo\solvers\kinsol.pyc", line 12, in <module>
File "assimulo\solvers\kinsol.pyc", line 10, in __load
File "kinsol.pyx", line 1, in init assimulo.solvers.kinsol (assimulo\solvers\kinsol.c:19711)
ImportError: No module named algebraic
Здесь qe может видеть, что это строка 7, которая вызывает мои проблемы, и эта строка
from assimulo.solvers import Radau5DAE
файл setup.py для py2exe выглядит следующим образом:
from distutils.core import setup
from py2exe.build_exe import py2exe
import sys
from glob import glob
import matplotlib
data_files = [("Microsoft.VC90.CRT", glob(r'C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*'))]
data_files.extend(matplotlib.get_py2exe_datafiles())
sys.path.append("C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\redist\\x86\\Microsoft.VC90.CRT")
excludes = ['_gtkagg', '_tkagg']
includes = [
"scipy.sparse.csgraph._validation",
"scipy.special._ufuncs_cxx",
]
opts = {
"py2exe": {
"includes":includes,
"excludes":excludes,
}
}
setup(name = "MySoft",
version = "0.1",
data_files=data_files,
windows=[{"script":"main.py"}], options=opts)
Если у кого-то есть подсказка, мне было бы очень интересно. Спасибо
2 ответа
Решение моей проблемы было получено путем добавления в опцию include алгебраического пакета следующим образом:
includes = ["assimulo.algebraic"]
Также необходимо убедиться, что библиотека добавлена в переменную PATH. Если нет, можно просто добавить sys.path.append("путь к библиотеке"), который в моем случае был
sys.path.append("C:\\Python27\\Lib\\site-packages\\assimulo")
в установочном файле
Спасибо за помощь Ура
Иногда я обнаружил, что py2exe не может включать пакеты, даже если они указаны в параметре пакетов, но обнаружил, что если я импортирую пакет в setup.py, он начинает работать, поэтому попробуйте добавить его в верхней части setup.py
:
import assimulo
Вы иногда найдете, что даже
if False:
import assimulo
будет работать, (используйте это assimulo
делает много настроек при импорте).