【问题标题】:No module error when module is installed安装模块时没有模块错误
【发布时间】:2012-06-30 08:55:17
【问题描述】:

在过去的几天里,我一直在使用 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”。虽然它确实有两次,但我不知道这是否重要。

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: python module python-2.7 swampy


    【解决方案1】:

    打开一个终端并输入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

    现在安装 swampy

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

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

    【讨论】:

    • 另一种解决方案是,如果您对 python site-packages 目录具有写入权限,则使用它来代替 OURPYPKGPATH=`python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())`"
    • 我也有类似的问题。我已经使用 pip 安装了统计信息,我可以看到 find / -name "statsd" /usr/local/lib/python2.7/dist-packages/statsd 你能解释一下为什么会这样吗?但是当我在我的代码中运行 import statsd 时,我得到一个导入错误。
    【解决方案2】:

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

    你是手动添加的吗?如果您将软件包安装在非标准位置,则应该修改 PYTHONPATH - 换句话说,如果您使用 pipeasy_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:~$
    

    【讨论】:

      【解决方案3】:

      您是否安装了 swampy 模块?如果没有,请关注these instructions

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

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

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

      【讨论】:

      • 对不起,我在完成之前不小心保存了问题。里面解释了我的 swampy 安装。感谢您的快速回复。
      • @user1485047 您使用的是 virtualenv 还是安装了任何其他版本的 python?在控制台中打开python并输入:from distutils.sysconfig import get_python_lib,然后输入print(get_python_lib())。它说什么?
      • 它说:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
      • 我在 Mac 上,所以可能预装了一些过时的版本
      • @user1485047 Mac 确实预装了 python。在您的路径上,这个以前的版本将优先。它可能类似于/usr/bin/python。我认为您可以更改它,例如 question 的答案。
      猜你喜欢
      • 1970-01-01
      • 2019-08-01
      • 2015-01-21
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多