【发布时间】:2013-04-05 03:25:18
【问题描述】:
我已经习惯了安装包的 R 功能,我正在尝试对 ipython 做同样的事情。有时以下方法有效,但有时又无效,我想最终找出为什么它只在一半时间内有效。
通常要安装一个模块(例如requests 模块),我会在打开一个新终端后键入以下内容:
$ sudo pip install requests
Password: *******
随后会出现一条消息,指示安装成功或已安装。
Requirement already satisfied (use --upgrade to upgrade):
requests in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Cleaning up...
这表明可以访问代码。事实上,如果我现在从终端运行 python,它会显示一个很好的响应,没有任何错误。
$ python
ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:20:15)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>>
我现在通过 Alfred 打开PyLab,它给了我一个错误。
Welcome to pylab, a matplotlib-based Python environment [backend: WXAgg].
For more information, type 'help(pylab)'.
In [1]: import requests
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
/Users/vincentwarmerdam/<ipython-input-1-686486c241c8> in <module>()
----> 1 import requests
ImportError: No module named requests
我从 StackOverflow (here) 上的另一个问题中阅读了一些帮助,该问题建议我从 ipython shell 安装模块。这给出了一个更加莫名其妙的反应:
In [2]: !pip install requests
Requirement already satisfied (use --upgrade to upgrade): requests in
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Cleaning up...
In [3]: import requests
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
/Users/vincentwarmerdam/<ipython-input-3-686486c241c8> in <module>()
----> 1 import requests
ImportError: No module named requests
这对我来说似乎很奇怪。系统上是否安装了多个版本的python?我怎么能检查这个?我需要将ipython 指向安装代码的位置吗?
【问题讨论】:
-
我不知道 Alfred 是什么,但是如果你只是尝试在没有 pylab/alfred 的 ipython 会话中导入请求会发生什么?
-
Alfred 是一个快捷应用。我尝试运行 ipython 而不是 pylab。我得到以下信息:
$ ipythonIn [1]: import requestImportError: No module named request似乎是同样的错误。 -
在 iPython 中尝试
import sys ; print sys.path看看是否包含安装目录。 -
当您使用纯 Python 和 IPython 时,要检查的一件事是
sys.executable的值,或者是head -n 1 $(which ipython)和head -n 1 $(which pip)的值,以确保它们使用相同的 Python。 -
$ head -n 1 $(which ipython)给出#!/Library/Frameworks/Python.framework/Versions/7.3/Resources/Python.app/Contents/MacOS/Python和$ head -n 1 $(which pip)给出#!/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7所以如果我理解正确,我需要将'pip-folder' 包含到'ipython-folder' 中?我仍然不明白为什么 ipython 中的pip install requests告诉我库已安装而文件夹不正确。
标签: python module installation pip ipython