我刚做了一个
sudo pip install matplotlib
工作得很好。然后
sudo pip install matplotlib
详细说明:
$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或其他一些env var?
更新从@infinity回答有关pip vs 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...
答案 0 :(得分:2)
查看您的where
结果,我认为您的ipython在尝试导入模块时似乎看错路径。
完整的诊断和修复(针对您和未来的Google员工):
在命令提示符下使用which
(Linux)或where
(windows)来检查pip
和python
/ ipython
路径。
1.1。如果ipython似乎从不同的路径运行,请启动它并使用import sys; sys.executable
检查匹配的Python安装位置。
无论如何,通过仔细修改PATH环境变量来解决这个问题,它将显示正确的Python可执行文件的路径。
编辑:经过与OP的一些额外讨论(看看@ comments),如果ipython安装没有与python可执行文件链接,你应该将你的ipython文件的第一行更改为shabang,然后是Python可执行文件的路径。当#!/usr/bin/python
是正确的Python可执行文件的路径时,它应该看起来像/usr/bin/python
。
编辑2:对于未链接的ipython,更好的解决方案是使用python -m pip install ipython
为正确的Python版本安装ipython(感谢@abarnert和@koffein)。
答案 1 :(得分:2)
让我们假设您使用ipython
从终端启动python控制台。如果要确保将软件包安装到正确的python安装中,请使用
sudo ipython -m pip install mpld3
所以应该自动使用正确的点(和正确的路径)。
答案 2 :(得分:0)
ipython可执行文件硬编码到/ usr / bin / python。我能看到的最佳解决方法是从
更改第一行#!/usr/bin/python
到
#!/usr/bin/env python
这解决了我的非标准python位置的问题。
答案 3 :(得分:0)
ipython
脚本只是实际IPython模块的一个非常薄的包装器,安装在Python的站点包中。
将其#!
行更改为指向不同的Python几乎总是一个坏主意。其他Python可能在其site-packages / dist-packages中有不同的IPython版本,或者可能根本没有。
当然如果你只想要一个ipython
,只需要用正确版本的Python安装它,不为任何其他Python安装它。
大多数人遇到的问题是他们意外地为两个不同的蟒蛇安装了它,并且他们安装的第二个(或偶尔,无论哪一个最终在PATH的获胜位置)最终成为他们使用的那个,即使它不是他们想要的那个。
如果您不希望IPython用于第二个Python版本,请不要安装它。或者,如果您已经这样做,请为两个Python版本卸载它,然后将其重新安装到您想要的版本。
如果你想让IPython用于多个Python版本怎么办?
不幸的是,他们都会尝试使用相同名称ipython
进行安装。也许ipython2
和ipython3
,但这只有在你自己的两个Python安装是一个2.x和一个3.x时才有用。如果您有CPython 3.4和PyPy 3.2,或者系统安装的CPython 2.7和第三方CPython 2.7,那对您没有任何帮助。
那么,你能做什么?
我所做的是确保每个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
。)
我必须手动创建这些符号链接,但这比修改脚本要好。