0

好的,我正在使用 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)

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

4

2 回答 2

2

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

import sympy.assumptions.handlers.calculus 

就在你导入 sympy 的地方。

除了“微积分”之外,您可能还需要对“order”、“sets”和“ntheory”执行相同的操作。

于 2012-10-12T00:29:54.353 回答
0

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

于 2012-10-12T02:52:04.940 回答