2012-10-11 4 views
0

좋아, 나는 SymPy를 사용하여 프로그램을 만들고있다. sympy.Eq, sympy.solve 및 sympy.Symbol을 사용합니다. 프로그램을 컴파일하고 sympy.solve, sympy.Eq 및 sympy.Symbol을 사용하는 명령 (사용자 인터페이스)을 실행합니다. 이 컴파일되지 않을 때 그것은 완벽하게 작동,하지만 난 (번들 실행 파일) py2exe에 함께 컴파일 할 때, 내이 오류 제공 : 나는py2exe와 Sympy에 이상한 오류가 발생했습니다.

lookup_view = getattr(__import__(mod_name, {}, {}, ['*']), func_name) 
에서 source.py의 코드를 변경 시도

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 

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

에 그리고 그것은 나에게 프로젝트가 컴파일되지 않은 경우에도 오류를했다. Sympy에서 파이썬 파일은 immediatly로 일반적으로 임포트되지 않기 때문에 포함되지 않는다고 가정합니다. 나는 다시 그것을 바꿔야했다. 이 문제를 해결할 수있는 방법이 있습니까? 나는 정말로 python 프로젝트를 실행 파일로 배포해야한다. 감사!

답변

2

저는 ImportError가 실제로 py2exe가 sympy.assumptions.handlers 나 그 서브 모듈을 선택하지 않았다는 것을 의미한다고 생각합니다. 가장 쉬운 해결 방법은 아마도 sympy를 가져올

import sympy.assumptions.handlers.calculus 

입니다.

"미적분"이외에 "주문", "세트"및 "ntheory"에 대해 동일한 작업을 수행해야 할 수도 있습니다.

0

sympy 코드를 변경하는 데 신경 쓰지 않는다면 sympy가있을 때 관련 파일을 __init__.py 파일에 추가하여 가져올 수 있다고 생각합니다.