如何在IPython中安装Python包?

56

我想知道是否可以在IPython shell中安装Python包,而无需离开shell。

7个回答

108

请查看被接受的回答,作者是@Chronial,在现代 IPython 或 Jupyter(截至2018年)中最好的方法是使用%pip 魔法命令

%pip install my_package

以下是2011年的过时答案:请参见被接受的答案以了解在现代Jupyter中更轻松地执行此操作的方法。

您可以像这样使用前缀:

!pip install packagename

!前缀是%sc命令的简写形式,用于运行shell命令。

您还可以使用!!前缀,它是%sx命令的简写形式,用于执行shell命令并捕获其输出(默认情况下保存到_变量中)。


4
实际上,你只需要在命令前加一个感叹号,例如 !pip install packagename - Thomas K
1
@ThomasK 是的,你说得对!我更新了我的答案,使用了 ! 并解释了 !!%sc%sx。我打算建议 iPython 维护者更新 %quickref 文档,明确提到 !!! 作为替代品! - aculich
1
太好了,谢谢。我刚刚看到了你的拉取请求(我是IPython的开发人员之一;)) - Thomas K
1
@ThomasK 太棒了!很高兴看到 IPython 开发人员在这里活跃。 - aculich
2
你如何指定Python版本?例如,我的笔记本中有Python 2.7和3.5内核。当我使用!pip install命令时,该软件包仅安装在3.5版本上。 - EntryLevelR
1
@EntryLevelR 你说得对。最好的答案已经在SO的另一个问题中写出来了。 - Ali_Sh

19

这个答案已过时:请查看被接受的回答,其中提供了在现代jupyter中更简单的方法。


aculich的答案并不适用于所有情况,例如:

  • 如果你在venv中安装了ipython/jupyter并直接通过venv的python二进制文件运行它
  • 如果你有多个Python版本,像EntryLevelR.

正确的命令是:

import sys
!{sys.executable} -m pip install requests

10
在现代的ipython或jupyter中,最好的方法是使用%pip魔法命令
%pip install my_package

3
Chronial在我的更新答案中提到了你,并给予了赞扬。我更新了这个答案,因为我在旧答案中获得了最多的赞,这样人们就可以快速找到最新的解决方案。 - aculich

9
import pip
pip.main(['install', 'package_name'])

以上基于shell的答案只有在您的$PATH环境变量中存在pip时才能工作(例如在Windows系统中)。


3

我喜欢hurfdurf的回答,但是仅靠iPython可能无法识别新模块(特别是如果它添加到库路径中)。这是一个带有iPython 3的增强示例:

import pip
pip.main(['install','pygame'])
# import pygame at this point can report ImportError: No module named 'pygame'
import site
site.main()
# now with refreshed module path...
import pygame

0

!pip install packagename 或类似的代码并不是真正的答案,如果我们有多个 Python 版本,而期望的 Python 版本不是系统默认版本。这样的代码只会在系统默认的 Python 版本上安装包。我认为,以下代码会很有帮助:

import pip
if int(pip.__version__.split('.')[0])>9:
    from pip._internal import main
else:
    from pip import main
main(['install', 'package_name'])    # the strings in the square brackets could be specified as needed

这段代码是基于pip版本编写的,可以在控制台中运行,并将应用于由控制台设置路径的任何python版本;可以通过import sys; sys.version, sys.path查看此python版本规范。我不确定这是否是最佳方法,但上述代码适用于我的目的,而!pip install packagename%pip install packagename则不适用(其中python:2.7.9,pip:19.2.3,IPython QtConsole:3.1.0)。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接