好的,我正在使用SymPy制作程序。我使用sympy.Eq,sympy.solve和sympy.Symbol。当我编译我的程序并运行使用sympy.solve,sympy.Eq和sympy.Symbol的命令(它是用户界面)时。它在未编译时非常有效,但是当我使用py2exe(作为捆绑的可执行文件)编译它时,它会给出我的错误:
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
我尝试从
更改source.py中的代码lookup_view = getattr(__import__(mod_name, {}, {}, ['*']), func_name)
到
exec "import "+mod_name+" as MODULE"
lookup_view = getattr(MODULE, func_name)
即使项目未编译,它也给了我错误。我假设没有包含同意的python文件,因为它通常不是立即导入的。我不得不改回来。有没有办法来解决这个问题?我真的需要将我的python项目作为可执行文件分发。谢谢!
答案 0 :(得分:2)
我认为ImportError确实意味着py2exe没有获取sympy.assumptions.handlers及其子模块。最简单的解决方法可能是添加
import sympy.assumptions.handlers.calculus
你导入同情的地方。
除了“微积分”之外,您可能需要对“order”,“sets”和“ntheory”执行相同的操作。
答案 1 :(得分:0)
如果您不介意更改症状代码,我认为您可以将这些文件添加到相关的__init__.py
文件中,以便在情感发生时导入它们。