mpld3 的 pip 安装

pip install for mpld3

我刚做了一个

 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 或其他一些环境变量?

更新 回答@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...

查看您的 where 结果,我认为您的 ipython 在尝试导入模块时似乎看错了路径。

完整的诊断和修复(适用于您和未来的 Google 员工):

  1. 在命令提示符下使用 which (Linux) 或 where (windows) 检查 pippython/ipython 路径。

    1.1。如果 ipython 似乎来自不同的路径 运行,请启动它并使用 import sys; sys.executable.

  2. 检查匹配的 Python 安装位置
  3. 无论如何,通过仔细修改 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 从终端启动 python 控制台。如果要确保将软件包安装到正确的 python 安装位置,请使用

sudo ipython -m pip install mpld3

因此应该自动使用正确的 pip(和正确的路径)。

ipython 脚本只是实际 IPython 模块的一个非常薄的包装器,安装在 Python 的站点包中。

只是将其 #! 行更改为指向不同的 Python 几乎总是一个坏主意。另一个 Python 在其 site-packages/dist-packages 中可能有不同的 IPython 版本,或者可能根本没有。


当然,如果你只想要一个ipython,只需要用正确版本的Python安装它,不要安装它对于任何其他 Python.

大多数人 运行 遇到的问题是他们不小心为两个不同的 Python 安装了它,然后安装了第二个(或者,偶尔,无论哪个最终出现在获胜位置)在 PATH 上)最终成为他们使用的那个,即使它不是他们想要的那个。

如果您不想 IPython 第二个 Python 版本,请不要安装它。或者,如果您已经这样做,请卸载两个 Python 版本,然后重新安装您想要的版本。


如果您想要 IPython 用于多个 Python 版本怎么办?

不幸的是,他们都将尝试使用相同的名称 ipython 进行安装。也许 ipython2ipython3,但这只有在您自己的两个 Python 安装是一个 2.x 和一个 3.x 时才有用。如果你有 CPython 3.4 和 PyPy 3.2,或者系统安装的 CPython 2.7 和第三方 CPython 2.7,那对你没有任何好处。

那么,你能做什么?

我所做的是确保每个 Python(除了系统安装的)都配置为使用不在我的 PATH 上的 scripts/bin 目录,然后手动进行符号链接。

所以,在我的 Mac 和 Linux 系统上,ipythonipython2 都指向系统 Python 2.7,并且刚刚安装通过 sudo pip install ipython。但是 ipython3 是我手动创建到我的主要 Python 3 安装安装二进制文件的位置的符号链接。 ipypyipypy3 是指向我的主要 PyPy 2.x 和 3.x 安装二进制文件的位置的符号链接。 (当然,这些我创建的所有并行符号链接名为 pythonpython2python3pypypypy3。)

我确实必须手动创建这些符号链接,但这比修改脚本要好。