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をインポートする場所です。

「微積分」に加えて、「順序」、「集合」、「理論」についても同じことを行う必要があるかもしれません。

于 2012-10-12T00:29:54.353 に答える
0

sympyコードを変更してもかまわない場合は、それらのファイルを関連__init__.pyファイルに追加して、sympyのときにインポートされるようにすることができると思います。

于 2012-10-12T02:52:04.940 に答える