2014-11-19 1 views
0

Я пытаюсь создать исполняемый файл с использованием py2exe на soft, который использует библиотеку assimulo (решатель дифференциальных уравнений). Проблема, возникающая в том, что во время выполнения я получаю:py2exe и assimulo - Нет модуля с именем алгебраический

ImportError: No module named algebraic

Точное сообщение об ошибке:

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) 

Если у кого-то есть ключ, мне было бы очень интересно. Благодаря

+0

Откуда берутся алгебраические? Если в пакете assimulo вы можете принудительно включить py2exe, используя опцию «packages». – Werner

+0

Да, это связано с assimulo, и пакет находится в: C: \ Python27 \ Lib \ site-packages \ assimulo. затем используя параметр: py2exe: {"packages": ['algorithmic']}, но я не знаю, как указать пакет? мне нужно дать весь путь? Спасибо – Yvus

ответ

0

решение моей проблемы было получено путем добавления в включает в себя опции, алгебраический пакет таким образом:

includes = ["assimulo.algebraic"] 

Также должны быть уверены, что библиотека добавляется к переменной PATH. Если нет, то можно просто добавить sys.path.append («путь к библиотеке»), которая в моем случае был

sys.path.append("C:\\Python27\\Lib\\site-packages\\assimulo") 

в файле настройки

Спасибо за помощь Приветствия

0

Иногда я нашел py2exe невключение пакеты, даже если они перечислены в опции пакетов, но обнаружил, что, если я импортировать пакет в setup.py он начинает работать так, попробуйте добавить, в верхней части setup.py :

import assimulo 

Вы иногда находят, что даже

if False: 
    import assimulo 

будет работать, (используйте это assimulo много делает настройки на импорт).

+0

Привет, я просто попробовал ваше решение, но py2exe не может найти пакет: нет модуля с именем алгебраический. Я попытался импортировать assimulo, даже assimulo.algebraic, добавляя «алгебраический» в список пакетов. Спасибо за вашу помощь – Yvus

+0

Я понял, что алгебраика - это файл .pyd, это будет причина, по которой он не может найти его? – Yvus

+0

Это может быть один из _reasons_, который py2exe не находит - и похоже, что он должен присутствовать там, где ваш exe может найти его, в том же каталоге, который должен выполнить ваш исполняемый файл. –