我已經寫了一個數獨求解器,特別是使用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中使用?
感謝您的回答!我肯定會的。我可以通過重命名堆棧跟蹤中的文件來自行修復它:將exec_py2.py重命名爲_exec_py2.py,將exec_py3.py重命名爲exec_py2.py。也許py2app只是使用錯誤的文件? – Epimetheus
不是。比較圖層可能包含「如果Py3K:import exec_py3; else import exec_py2「,py2app(或者modulegraph)會查看兩個導入,即使只有一個可以到達。 –