如何从 IPython 中安装 Python 包?
Posted
技术标签:
【中文标题】如何从 IPython 中安装 Python 包?【英文标题】:How to install a Python package from within IPython? 【发布时间】:2012-01-29 14:05:42 【问题描述】:我想知道是否可以在不离开 IPython shell 的情况下安装 python 包。
【问题讨论】:
【参考方案1】:请参阅@Chronial 中的the accepted answer,这是在现代 ipython 或 jupyter(截至 2018 年)中执行此操作的最佳方法是使用 the %pip
magic:
%pip install my_package
以下 2011 年的答案现已过时:请参阅 the accepted answer,了解在现代 jupyter 中执行此操作的更简单方法。
您可以像这样使用!
前缀:
!pip install packagename
!
前缀是 %sc
命令运行 shell 命令的简写。
您还可以使用!!
前缀,它是%sx
命令的简写,以执行shell 命令并捕获其输出(默认保存到_
变量中)。
【讨论】:
其实,你可以在命令前加一个 !例如!pip install packagename
.
@ThomasK 是的,你是对的!我更新了我的答案以使用!
并解释了!!
、%sc
和%sx
。我将建议 iPython 维护者更新%quickref
文档,明确提及!
和!!
作为替代!
太好了,谢谢。我刚刚看到您的拉取请求(我是 IPython 开发人员之一;))
@ThomasK 太棒了!很高兴看到 IPython 开发人员在这里很活跃。
如何指定python版本?例如,我的笔记本中有 Python 2.7 和 3.5 内核。当我使用 !pip install
时,该软件包仅安装在 3.5 版中。【参考方案2】:
此答案已过时:请参阅the accepted answer,了解在现代 jupyter 中更简单的方法。
aculich's answer 并非在所有情况下都有效,例如:
如果你在 venv 中安装了 ipython/jupyter 并直接通过 venv 的python
二进制运行它
如果您有多个 python 版本,例如EntryLevelR。
正确的命令是:
import sys
!sys.executable -m pip install requests
【讨论】:
【参考方案3】:import pip
pip.main(['install', 'package_name'])
除非pip
在您的 $PATH 中(例如在 Windows 上),否则上述基于 shell 的答案不起作用。
【讨论】:
【参考方案4】:在现代 ipython 或 jupyter 中执行此操作的最佳方法是使用 the %pip
magic:
%pip install my_package
【讨论】:
Chronial,在my updated answer 中感谢您,我更新了它,因为我的旧答案获得了最多的支持,因此人们可以快速获得最新的解决方案。【参考方案5】:我喜欢 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
【讨论】:
【参考方案6】:如果您使用Conda Package Manager,以下语法可能适合您的需要
$ conda install -c conda-forge <targetPackageName>
https://pypi.org/project/earthpy/
【讨论】:
【参考方案7】:!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).
【讨论】:
以上是关于如何从 IPython 中安装 Python 包?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Google Dataproc 集群中安装 python 包
如何在 Pycharm (Python 3.8 / 3.9) 中安装 YAML 包?