在jupyter notebook中安装python包
首先,我简单提一下pip 还是 conda的问题。
对很多使用者来说,选择pip还是conda是非常令人困惑的问题。
去年,针对这个问题我写了一篇详尽得可能超过你想象的博文 , 但这二者的本质区别可以这样概括:
pip 可以在所有环境下安装python包。
conda可以在conda环境下安装所有包。
如果你已经安装了python,那么这个选择对你来说是非常容易的:
如果你是用Anaconda或者Miniconda安装的python,那么请使用conda命令来安装python包。如果conda告诉你你要下载的这个包不存在,那么使用pip
(或者试试 conda-forge, 它比conda默认的包的数量要更多)。
如果你是使用其他方式安装的python,那么使用pip来安装python包。
最后,因为这样的问题常常发生,我必须提醒你永远不要使用sudo pip install。
即便这么做在短期内看起来好像解决了问题,但它总是会在更长的时间范围下带来问题。
比如,如果pip install给了你一个许可错误(permission error),这很可能意味着你在试图安装/升级系统python中的包,比如usr/bin/python。这么做会带来糟糕的后果,因为通常操作系统本身就依赖着某种特定版本的包。
对于日常的python使用,你应该把你的包和系统python的隔离开来,使用 虚拟环境 or Anaconda/Miniconda — 这种场合下我比较喜欢用conda。
How to use Conda from the Jupyter Notebook
如果你在使用jupyter notebook并且你希望通过conda来安装某个包,你也许会想要使用!来直接在notebook里以shell的方式运行conda:
# DON'T DO THIS!
!conda install --yes numpy
(注意:当conda请求用户确认时,我们使用 --yes 来自动回答 y )
出于多种原因(这些原因我将在下面详细介绍),总之,如果你在当前的notebook中使用这样安装的包,这种操作通常来说不会起作用,尽管在很简单的情况下它会起作用。
而以下才是通用的安装方式:
# Install a conda package in the current Jupyter kernel
import sys
!conda install --yes --prefix {sys.prefix} numpy
其中的{sys.prefix}换成自己的虚拟环境的路径
加入–yes是为了自动回答y
这些增加的内容确保了conda能在当前运行的Jupyter核内安装这个包。 (感谢 Min Ragan-Kelley 提出了这个办法).