安装后无法导入praw模块

3

编辑提示:在开始删除/修改安装之前,请浏览StvnW的回答/总结,以确保您正在应用适合您的解决方案。

我已经安装了Python 2.7.5和pip [编辑:Mac OSX Mountain Lion]。我在终端中运行了“pip install praw”。一切顺利。当我运行Python并运行“import praw”时,我会得到:

    ...$ python
    Python 2.7.5 (v2.7.5:ab05e7dd2788, May 13 2013, 13:18:45) 
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import praw
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ImportError: No module named praw

当我安装praw时,出现以下情况:

从脚本中导入相同的ImportError。

    $ pip install praw
    Downloading/unpacking praw
      Downloading praw-2.1.10.tar.gz (83kB): 83kB downloaded
      Running setup.py egg_info for package praw

    Requirement already satisfied (use --upgrade to upgrade): requests>=1.2.0 in
    /usr/local/lib/python2.7/site-packages (from praw)
    Requirement already satisfied (use --upgrade to upgrade): six in
    /usr/local/lib/python2.7/site-packages (from praw)
    Requirement already satisfied (use --upgrade to upgrade): update-checker>=0.6 in
    /usr/local/lib/python2.7/site-packages (from praw)
    Requirement already satisfied (use --upgrade to upgrade): setuptools in
    /usr/local/lib/python2.7/site-packages/setuptools-1.1.6-py2.7.egg (from update-
    checker>=0.6->praw)
    Installing collected packages: praw
      Running setup.py install for praw

        Installing praw-multiprocess script to /usr/local/bin
    Successfully installed praw
    Cleaning up...

在Python中,如果我运行help('modules'),它会找不到。作为一个相对新手的Python用户,我没有通过谷歌搜索解决这个问题。希望能够得到一些提示。更新:我已经卸载了2.7.2版本,卸载了praw,并卸载(homebrew)pip。我运行了Python 2.7.5,它找不到该模块(正如你所预料的那样)。然后我使用easy_install重新安装了pip,现在2.7.5可以找到praw,但是出现了这个错误:
    $ python
    Python 2.7.5 (v2.7.5:ab05e7dd2788, May 13 2013, 13:18:45) 
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import praw
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Library/Python/2.7/site-packages/praw/__init__.py", line 43, in <module>
         from update_checker import update_check
       File "/Library/Python/2.7/site-packages/update_checker.py", line 11, in <module>
         from pkg_resources import parse_version as V
    ImportError: No module named pkg_resources
    >>>

感谢迄今为止的帮助,虚假安装是问题1的根源。

最终问题的解决方案可以在此处找到:

No module named pkg_resources

我希望有一种方法可以为未来的读者总结这个问题,但我已经尝试了很多东西,不再记得哪个解决了什么。我基本上卸载了所有(python 2.7.2、2.7.5、praw、pip),从http://python.org/download/重新安装了2.7.5,使用easy_install(和sudo命令)而不是homebrew重新安装了pip,使用sudo命令重新安装了praw,并按照上面链接中的说明解决了随后的模块错误。希望可以帮到您 :)


奇怪。如果是Windows,只需退出并再次重复(不知道是否能解决问题)。 - karthikr
你是如何安装pip的?如果你运行import sys; print sys.path,是否包含了/usr/local/python2.7/site-packages/? - Wooble
不完全正确:'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', '/Library/Python/2.7/site-packages'。编辑:这些是site-packages的唯一引用。 - Dean Solecki
3个回答

4

OS X系统版本的Python位于/System/Library/Frameworks/Python.Framework/<version>,每个版本都链接到/Library/Python/<version>/site-packages。看起来你已经安装了另一个版本的python和/或pip到/usr/local,但是当你调用python时仍然得到系统版本。

尝试这样做:

$ /usr/local/bin/python
>>> import praw

我建议如果你要使用Python进行任何工作,可以考虑使用像pyenvvirtualenv这样的工具。Pyenv可以让你轻松管理和切换多个版本(包括微版本x.x.3、x.x.5等)。Virtualenv可以创建隔离的Python环境,您可以针对特定项目固定site-packages的版本。
  • sudo easy_install pip会在/System/Library/Python/下安装pip。调用该pip将会在/Library/Python//site-packages下安装软件包。
  • brew install python会在/usr/local/下安装第二个版本的python,包括pip。那个pip将会把软件包放在/usr/local/lib/python/site-packages/。
  • 一个版本可能看不到安装到另一个版本的软件包。
  • which pythonwhich pip对于故障排除很有帮助。
  • Dean上面的最终解决方案会导致用户软件包被安装到系统site-packages中。
  • 尽管Dean选择更新系统Python,但许多人会主张使用brewpyenvvirtualenv来与系统Python隔离。

$ /usr/local/bin/python Python 2.7.5 (v2.7.5:ab05e7dd2788, May 13 2013, 13:18:45) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 输入 "help", "copyright", "credits" 或 "license" 以获取更多信息。
import praw Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Library/Python/2.7/site-packages/praw/init.py", line 43, in <module> from update_checker import update_check File "/Library/Python/2.7/site-packages/update_checker.py", line 11, in <module> from pkg_resources import parse_version as V ImportError: No module named pkg_resources
- Dean Solecki
哦...它没有遵循格式。那就是它输出的内容。我使用easy_install和pip重新安装了praw(并使用easy_install和homebrew重新安装了pip),根据我采取的不同路线,我得到了不同的错误。这有点像进步。;) - Dean Solecki
1
sudo easy_install pip 会在 /Library/Python/ 下安装 pip,而 brew install python 则会在 /usr/local 下安装 python 和 pip。如果出现 ImportError: No module named pkg_resources 错误,则是因为缺少 setuptools。你需要运行 pip install setuptools 安装它。 - StvnW
StvnW基本上总结了问题。混合使用pip和brew会搞乱位置,但是easy_install和pip相处得很好。从http://python.org/download/下载的Python安装包可以无缝替换默认安装。 - Dean Solecki
我建议选择另一种方式,不要触碰系统安装,而是专门使用 pyenvvirtualenv - StvnW

1

这很奇怪。我怀疑你的Mac OS上安装了另一个Python 2.7版本。


请尝试运行2.7.2版本并导入praw。 - demo.b
据我所知,Python不允许您确定0.0.x,只能确定0.x。我可以运行2.6或2.7,但不能指定2.7.2或2.7.5。 - Dean Solecki

0
如果您正在使用Mac,请使用which python检查您的shell路径上的Python版本。然后确保要运行的脚本中的shebang行使用相同版本的Python。
在我的终端中,我键入了which python并得到输出/usr/local/bin/python 我转到要运行的脚本并将以下内容添加到第一行#!/usr/local/bin/python 然后我回到终端。检查我是否在要运行的脚本所在的同一目录中,并键入./my_script.py 如果此时没有看到任何输出,请确保您的脚本启用了执行权限,方法是在终端中键入chmod +x my_script.py。然后再次尝试使用./my_script.py运行脚本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接