我已经写了一个数独求解器,特别是使用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)会查看两个导入,即使只有一个可以到达。 –