我刚刚做了一个
sudo pip install matplotlib
效果很好。然后
sudo pip install mpld3
详情:
$sudo pip install mpld3
Downloading/unpacking mpld3
Downloading mpld3-0.2.tar.gz (1.1MB): 1.1MB downloaded
Running setup.py (path:/private/tmp/pip_build_root/mpld3/setup.py) egg_info for package mpld3
Installing collected packages: mpld3
Running setup.py install for mpld3
Successfully installed mpld3
Cleaning up...
所以mpld3也安装得很好。
由于某种原因,matplotlib 出现在 python 中,但没有出现在 mpld3 中:
In [3]: import matplotlib.pyplot as plt
In [4]: plt.plot([3,1,4,1,5], 'ks-', mec='w', mew=5, ms=20)
Out[4]: [<matplotlib.lines.Line2D at 0x103ab4d10>]
In [5]: plt.show()
工作正常..
但是:
In [6]: import mpld3
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-6-25a6968c2f16> in <module>()
----> 1 import mpld3
ImportError: No module named mpld3
是否需要更新例如PYTHONPATH 或其他一些环境变量?
更新回答@infinity关于pip与ipython版本的(好)问题:
$which pip
/usr/local/Cellar/python/2.7.8_2/bin/pip
18:20:42/lightbox2 $which ipython
/usr/local/bin/ipython
18:20:45/lightbox2 $which python
/usr/local/Cellar/python/2.7.8_2/bin/python
18:23:58/lightbox2 $sudo pip install ipython
Password:
Requirement already satisfied (use --upgrade to upgrade): ipython in /Library/Python/2.7/site-packages
Cleaning up...
假设您使用
ipython
从终端启动 python 控制台。如果您想确保将软件包安装到正确的 python 安装中,请使用
sudo ipython -m pip install mpld3
因此应该自动使用正确的点(和正确的路径)。
看看你的
where
结果,我认为你的ipython在尝试导入模块时似乎看到了错误的路径。
完整的诊断和修复(为您和未来的 Google 员工):
在命令提示符下使用
which
(Linux) 或 where
(Windows) 检查 pip
和 python
/ipython
路径。
1.1。如果 ipython 似乎从不同的路径运行,请启动它并使用
import sys; sys.executable
检查匹配的 Python 安装位置。无论如何,请通过仔细修改 PATH 环境变量来解决此问题,使其显示正确的 Python 可执行文件的路径。
编辑:经过与OP的一些额外讨论(查看@评论),如果ipython安装未与python可执行文件链接,您应该将ipython文件的第一行更改为shabang,然后是Python的路径可执行的。它应该看起来像:
#!/usr/bin/python
当 /usr/bin/python
是正确的 Python 可执行文件的路径时。
编辑2:对于未链接的ipython,更好的解决方案是使用
python -m pip install ipython
安装正确的Python版本的ipython(感谢@abarnert和@koffein)。
ipython 可执行文件被硬编码到 /usr/bin/python。我能看到的最好的解决方法是将第一行更改为
#!/usr/bin/python
到
#!/usr/bin/env python
这解决了我的非标准 python 位置的问题。
ipython
脚本只是实际 IPython 模块的一个非常薄的包装,安装到 Python 的站点包中。
仅仅更改其
#!
行以指向不同的 Python 几乎总是一个坏主意。其他 Python 的 site-packages/dist-packages 中可能有不同的 IPython 版本,或者可能根本没有。
当然,如果您只想要一个
ipython
,只需使用正确版本的 Python 来安装它,而不是为任何其他 Python 安装它。
大多数人遇到的问题是,他们不小心为两个不同的 Python 安装了它,无论他们第二个安装哪个(或者偶尔,无论哪个最终位于 PATH 上的获胜位置)最终都会成为他们使用的那个,甚至虽然这不是他们想要的。如果您不希望第二个 Python 版本使用 IPython,则不要安装它。或者,如果您已经这样做了,请卸载两个 Python 版本,然后重新安装您想要的版本。
不幸的是,他们都会尝试使用相同的名称进行安装,
ipython
。也许是
ipython2
和
ipython3
,但这只有在您自己的两个 Python 安装分别是一个 2.x 和一个 3.x 时才有用。如果您有 CPython 3.4 和 PyPy 3.2,或者系统安装的 CPython 2.7 和第三方 CPython 2.7,那对您没有任何好处。那么,你能做什么?
我所做的就是确保每个 Python(除了系统安装的 Python 之外)都配置为使用不在我的 PATH 上的
scripts
/
bin
目录,然后手动进行符号链接。因此,在我的 Mac 和 Linux 系统上,
ipython
和
ipython2
都指向系统 Python 2.7,并且都是由
sudo pip install ipython
安装的。但是
ipython3
是我手动创建的符号链接,指向我的主要 Python 3 安装安装二进制文件的位置。
ipypy
和
ipypy3
是我的主要 PyPy 2.x 和 3.x 安装安装二进制文件的符号链接。 (当然,我创建的所有并行符号链接名为
python
、
python2
、
python3
、
pypy
和
pypy3
。)我确实必须手动创建这些符号链接,但这比修改脚本更好。