Как установить пакет Python из IPython?

Интересно, возможно ли установить пакеты Python, не выходя из оболочки IPython.

7 ответов

Решение

Вы можете использовать ! префикс как этот:

!pip install packagename

! префикс является сокращением для %sc команда для запуска команды оболочки.

Вы также можете использовать !! префикс, который является сокращением для %sx команда для выполнения команды оболочки и захвата ее вывода (сохраняется в _ переменная по умолчанию).

Принятый ответ aculich не будет работать при любых обстоятельствах, например:

  • Если вы установили ipython/jupyter в venv и запустите его напрямую через venv python двоичный
  • Если у вас есть несколько версий Python, например, EntryLevelR.

Правильная команда:

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

Лучший способ сделать это в современном jupyter является использование%pipмагия :

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

Вышеуказанные ответы на основе оболочки не работают, если pip находится в вашем $PATH (например, в Windows).

Мне нравится ответ 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

или аналогичные коды не будут верным ответом, если у нас есть разные версии 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, путь которых задается консолью; Спецификации этой версии Python могут быть просмотрены import sys; sys.version, sys.path. Я не уверен, что это лучший подход, но вышеупомянутый код работал для моих целей и !pip install packagename или %pip install packagenameне сделал ( где python: 2.7.9, pip: 19.2.3, IPython QtConsole: 3.1.0).

Если вы используете Conda Package Manager, следующий синтаксис может соответствовать вашим потребностям.

$ conda install -c conda-forge <targetPackageName>

https://pypi.org/project/earthpy/

Другие вопросы по тегам