过去几天我一直在使用Think Python来学习编程。今天我开始讨论需要Swampy的第4章,这是一个包(正确的术语?)用于教导,在本章中,接口设计。
所以,谈到我的问题,我被告知输入的第一段代码是
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在site-packages中,当我向解释器询问安装了哪些模块时,swampy显示出来。我只是不明白为什么我会收到错误。
另外,我的PYTHONPATH最后有'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/swampy'。虽然确实有两次,但我不知道这是否重要。
非常感谢任何帮助。
由于
答案 0 :(得分: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环境变量。
答案 1 :(得分:1)
另外,我的PYTHONPATH有 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/swampy' 在末尾。虽然确实有两次,但我不知道是否 这很重要。
你手动添加吗?如果您在非标准位置安装软件包,则应修改PYTHONPATH
- 换句话说,如果不使用pip
或easy_install
但希望包可以在全球范围内使用。
为了消除这些令人头疼的问题,建议使用虚拟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:~$
答案 2 :(得分:0)
你安装了沼泽模块吗?如果没有,请按these instructions。
要运行独立脚本,您可以将代码放在以下块中:
if __name__ == '__main__':
world = TurtleWorld()
bob = Turtle()
wait_for_user()
这告诉python如果直接调用脚本则执行代码。因此,如果您在swampFunction
之类的函数中使用此函数并且从其他脚本调用它,则上述块将无法运行。