2014-02-17 27 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)会查看两个导入,即使只有一个可以到达。 –

相关问题