2014-02-17 30 views
0

我已經寫了一個數獨求解器,特別是使用tkinter和multiprocessing,但不僅如此。我想讓它成爲一個獨立的應用程序,我正在使用py2app。我已經運行了py2applet-3.3 --make-setup sudoku_app.py(這是通過macports安裝時調用的),並且它成功了。然而,隨着python3.3(python3.3 setup.py py2app)建設時,它返回一個SyntaxError與結束這樣一個幾乎是無限的堆棧跟蹤:py2app使用python3.3運行時出現SyntaxError

File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/modulegraph/modulegraph.py", line 954, in load_module 
co = compile(contents, pathname, 'exec', 0, True) 
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/sympy/mpmath/libmp/exec_py2.py", line 2 
exec string in globals, locals 
     ^
SyntaxError: invalid syntax 

當運行與python2.7相同的設置文件,它確實能夠成功構建,但在嘗試運行創建的.app時出現一堆錯誤。我已經寫了我的代碼在python3,雖然試圖通過各種嘗試保持python2兼容性...除了 - 塊和從未來進口。但在某些時候,它變得太複雜了,我決定只用python3。

爲什麼py2app不能在python3中使用?

回答

2

你的應用程序不能用py2app(還),因爲我沒有考慮你的py3k支持的方式。特別是,modulegraph假定依賴關係圖中的所有模塊都包含當前python版本的有效Python代碼。

你能在我的bitbucket頁面(https://bitbucket.org/ronaldoussoren/py2app)提交一個錯誤以確保我不會忘記修復這個錯誤嗎?

+0

感謝您的回答!我肯定會的。我可以通過重命名堆棧跟蹤中的文件來自行修復它:將exec_py2.py重命名爲_exec_py2.py,將exec_py3.py重命名爲exec_py2.py。也許py2app只是使用錯誤的文件? – Epimetheus

+0

不是。比較圖層可能包含「如果Py3K:import exec_py3; else import exec_py2「,py2app(或者modulegraph)會查看兩個導入,即使只有一個可以到達。 –

相關問題