2012-10-11 74 views
0

好吧,我正在使用SymPy程序。我使用sympy.Eq,sympy.solve和sympy.Symbol。当我编译我的程序并运行使用sympy.solve,sympy.Eq和sympy.Symbol的命令(它是一个用户界面)时。它完美的作品时,不编译它,但是当我py2exe编译(作为一个捆绑的可执行程序),它给我这个错误:奇怪的错误与py2exe和Sympy

Traceback (most recent call last): 
    File "RateTime.py", line 46, in <module> 
    File "RateTime.py", line 33, in main 
    File "RateTime.py", line 4, in get_catch_up_time 
    File "sympy\solvers\solvers.pyc", line 883, in solve 
    File "sympy\solvers\solvers.pyc", line 316, in check_assumptions 
    File "sympy\assumptions\ask.pyc", line 88, in ask 
    File "sympy\assumptions\assume.pyc", line 94, in _eval_ask 
    File "sympy\assumptions\assume.pyc", line 157, in eval 
    File "sympy\utilities\source.pyc", line 26, in get_class 
ImportError: No module named handlers 

我试图从

lookup_view = getattr(__import__(mod_name, {}, {}, ['*']), func_name) 
改变source.py代码

exec "import "+mod_name+" as MODULE" 
lookup_view = getattr(MODULE, func_name) 

它给了我,即使该项目未编译错误。我认为sympy中的python文件没有被包含,因为它通常不立即导入。我必须改回它。有没有办法来解决这个问题?我真的需要我的python项目作为可执行文件分发。谢谢!

回答

2

我认为ImportError确实意味着py2exe没有拿起sympy.assumptions.handlers和它的子模块。最简单的解决方法可能是添加

import sympy.assumptions.handlers.calculus 

右键导入sympy。

除“微积分”之外,您可能还需要对“顺序”,“集合”和“ntheory”进行相同操作。

0

如果您不介意更改sympy代码,我想您可以将这些文件添加到相关__init__.py文件,以便它们在sympy时被导入。