Swampy.1.1与Python 3
我正在读一本叫做《Think Python》的书,作者是Allen Downey。在第四章中,需要使用一套叫做Swampy的模块。我已经下载并安装好了这个模块。
问题是这些模块是用Python 2写的,而我用的是Python 3(在Windows 7 RC1上)。当我运行Swampy中的TurtleWorld模块时,出现了关于print和exec语句的错误信息,因为在Python 3中,这两个已经变成了函数。我通过在GUI和World模块的代码中给print和exec加上括号来修复这些错误。我还遇到了一个错误,说找不到Tkinter模块。结果发现,在Python 3中,这个模块的名字是小写的t开头。
第三个错误更麻烦:ImportError: No module named tkFont。
有没有人知道该怎么解决吗?谢谢。
4 个回答
1
对于Mac用户:我刚开始学Python,遇到了同样的问题。写这段话是为了让其他人不必浪费几个小时去解决这个问题。你可以这样做:
- 不要安装Python 3,原因是你不想修改所有的Swampy代码。相反,下载最新版本的Python 2(我用的是2.7.5)。
- 然后从这里下载Swampy-2.1.1.tar.gz文件:https://pypi.python.org/pypi/swampy/2.1.1。在你的下载文件夹中双击这个文件来解压。
- 打开解压后的文件夹Swampy 2.1.1。你应该能看到几个项目,其中包括一个叫做swampy的文件夹。
- 关键步骤来了:把这个文件夹拖到这个路径的最后一个文件夹里:Macintosh HD/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages。再说一遍:把“swampy”文件夹拖到“site-packages”文件夹里。
- 完成后,在终端中启动Python,输入“import swampy.TurtleWorld”。如果你看到提示符(>>>)而没有错误信息,那就可以继续学习了。
6
看起来tkinter终于跟上了Python 3的步伐 - tkFont现在变成了tkinter.font。
http://docs.pythonsprints.com/python3_porting/py-porting.html
#!/usr/bin/env python3.2
# -*- coding: utf-8 -*-
#
# font_ex.py
#
import tkinter
top = tkinter.Tk()
butt01 = tkinter.Button(top, text="Hello World", font=('Helvetica', 24,))
custom_font_serif = ('Times', 24, 'bold')
butt02 = tkinter.Button(top, text="Hello World", font=custom_font_serif)
custom_font_sans = ('Helvetica', 36, 'italic')
butt03 = tkinter.Button(top, text="Hello World", font=custom_font_sans)
butt01.pack()
butt02.pack()
butt03.pack()
top.mainloop()
3
很多重要的第三方库还没有为Python 3重新编写,所以现在你只能使用Python 2.x。这个情况是没有办法改变的。正如在官方Python下载页面上所说,
如果你不知道该用哪个版本,建议你从Python 2.6.4开始;目前有更多的第三方软件是兼容Python 2,而不是Python 3。