【问题标题】:How to install a Python package from within IPython?如何从 IPython 中安装 Python 包?
【发布时间】:2012-01-29 14:05:42
【问题描述】:

我想知道是否可以在不离开 IPython shell 的情况下安装 python 包。

【问题讨论】:

    标签: python module installation ipython


    【解决方案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).

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2017-09-27
              • 2014-06-27
              • 1970-01-01
              • 2022-01-17
              • 1970-01-01
              • 2018-01-01
              • 2014-10-14
              相关资源
              最近更新 更多