1

在过去的几天里,我一直在使用 Think Python 来学习编程。今天我到了第 4 章,它开始谈论需要 Swampy,这是一个用于在本章中教授界面设计的包(正确的术语?)。

所以,谈到我的问题,我被告知输入的第一段代码是

from swampy.TurtleWorld import * 
world = TurtleWorld()
bob = Turtle()
wait_for_user()

当我运行它时,我收到以下错误

Traceback (most recent call last):
File "/Users/dylanevans/Documents/Code/Python/TurtleWorld.py", line 1, in <module>
from swampy.TurtleWorld import *
ImportError: No module named swampy.TurtleWorld

我已经使用 pip 和 distutils 安装和卸载了 swampy,swampy 在站点包中,当我询问解释器安装了哪些模块时,swampy 出现了。我只是不明白为什么我会收到错误消息。

另外,我的 PYTHONPATH 末尾有“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/swampy”。虽然它确实有两次,但我不知道这是否重要。

任何帮助将不胜感激。

谢谢

4

3 回答 3

2

打开一个终端并输入env | grep ^PYTHONPATH希望你得到这样的东西:

PYTHONPATH=/python/path/with/write/access:/another/python/path

选择您具有写入权限的路径之一,这将是OURPYPKGPATH=/python/path/with/write/access

如果不存在这样的 PYTHONPATH,我们将在我们的主目录中创建自己的 PYTHONPATH,并确保 python 将来可以看到它:

mkdir ~/.ourPyPkgPath
echo 'export PYTHONPATH=$PYTHONPATH:~/.ourPyPkgPath' >> ~/.profile

在这种情况下,我们将使用OURPYPKGPATH=~/.ourPyPkgPath

现在安装沼泽

easy_install -d $OURPYPKGPATH 'http://pypi.python.org/packages/source/s/swampy/swampy-2.1.1.tar.gz'

现在它应该只是一个source ~/.profile或注销并再次登录的情况,以便设置 PYTHONPATH 环境变量。

于 2012-07-14T13:59:09.513 回答
1

另外,我的 PYTHONPATH 末尾有“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/swampy”。虽然它确实有两次,但我不知道这是否重要。

你是手动添加的吗?PYTHONPATH如果你在非标准位置安装包,你应该修改——换句话说,如果你使用pip或者easy_install但希望包对 Python 全局可用。

为了消除这样的麻烦,建议使用虚拟 python 环境,您可以使用virtualenv. 安装 virtualenv 后:

burhan@lenux:~$ virtualenv --no-site-packages swampy
The --no-site-packages flag is deprecated; it is now the default behavior.
New python executable in swampy/bin/python
Installing distribute.............................................................................................................................................................................................done.
Installing pip...............done.
burhan@lenux:~$ source swampy/bin/activate
(swampy)burhan@lenux:~$ pip install swampy
Downloading/unpacking swampy
  Downloading swampy-2.1.1.tar.gz (46Kb): 46Kb downloaded
  Running setup.py egg_info for package swampy

Installing collected packages: swampy
  Running setup.py install for swampy

Successfully installed swampy
Cleaning up...
(swampy)burhan@lenux:~$ python
Python 2.7.3 (default, Apr 20 2012, 22:44:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from swampy.TurtleWorld import *
>>> quit()
(swampy)burhan@lenux:~$
于 2012-07-14T15:12:13.330 回答
0

您是否安装了沼泽模块?如果没有,请按照这些说明进行操作。

要运行独立脚本,您可以将代码放在以下块中:

if __name__ == '__main__':
    world = TurtleWorld()
    bob = Turtle()
    wait_for_user()

如果直接调用脚本,这会告诉 python 执行代码。因此,如果您将其放在类似的函数中swampFunction并从不同的脚本中调用它,则上述块将不会运行。

于 2012-06-28T19:20:42.170 回答