我目前正在使用ThinkPython书学习python,使用的是python 3.4和Anaconda IDE。我需要继续的部分原因是安装一个名为swampy的模块。我用pip安装它,效果很好。导入模块与tkinter一起工作,但我不能使用模块中的任何功能。我检查了我的lib文件夹,沼泽就在那里,而且功能也在沼泽文件夹中。我无法弄清楚为什么它不起作用。我真的需要帮助。如果问题不够明确,请告诉我。我已经包含了我试图运行的代码以及每次尝试运行时收到的错误消息
我尝试运行的代码(第29页,思考Python的第4章,python 3.4的版本)
import tkinter
import swampy
world = swampy.TurtleWorld
bob = Turtle()
print(bob)
wait_for_user()
我收到错误消息
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\Mbaka1\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 682, in runfile
execfile(filename, namespace)
File "C:\Users\Mbaka1\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 85, in execfile
exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)
File "C:/Users/Mbaka1/Documents/Python Scripts/test.py", line 28, in <module>
world = swampy.TurtleWorld
AttributeError: 'module' object has no attribute 'TurtleWorld'
答案 0 :(得分:1)
如果您已下载源代码,本书会显示这些说明:
from TurtleWorld import *
world = TurtleWorld()
bob = Turtle()
print(bob)
wait_for_user()
如果你想在使用pip安装后运行代码,这应该有效:
from swampy.TurtleWorld import *
world = TurtleWorld()
bob = Turtle()
print(bob)
wait_for_user()
你正在做的事情是不起作用的原因是因为TurtleWorld
是swampy
包中的一个模块,它包含一个具有相同名称的函数,即{{1 }}。因此,当您执行TurleWorld
然后尝试拨打import swampy
时,您尝试调用模块而不是函数。
答案 1 :(得分:0)
或者,您可以在此处下载第二版Think Python:http://greenteapress.com/wp/think-python-2e/它使用Python3,您不需要使用沼泽包来运行此处给出的示例,因为turtle和tkinter(这里使用的)来了作为Python标准库的一部分。
答案 2 :(得分:0)
我目前正在研究这本书。我通过添加:
解决了这个问题import swampy.TurtleWorld
确保swampy模块中的TurtleWorld模块在shell中运行。只要你的Python版本是3.4或3.5,这就可以工作。