Why does "pip install" inside Python raise a SyntaxError?
Почему "pip install" внутри Python вызывает SyntaxError?
Я пытаюсь использовать pip для установки пакета. Я пытаюсь запустить pip install из оболочки Python, но получаю SyntaxError. Почему я получаю эту ошибку? Как мне использовать pip для установки пакета?
pip запускается из командной строки, а не из интерпретатора Python. Это программа, которая устанавливает модули, поэтому вы можете использовать их из Python. После того, как вы установили модуль, вы можете открыть оболочку Python и выполнить import selenium.
Оболочка Python - это не командная строка, это интерактивный интерпретатор. Вы вводите в нее код Python, а не команды.
Ответ 2
Используйте командную строку, а не оболочку Python (DOS, PowerShell в Windows).
Если вы установили Python в свой PATH с помощью последних инсталляторов, вам не нужно находиться в этой папке для запуска pip
Терминал в Mac или Linux
$ pip install XYZ
Ответ 3
Как предположил @ sinoroc, правильный способ установки пакета через pip - это использование отдельного процесса, поскольку pip может вызвать закрытие потока или может потребовать перезапуска интерпретатора для загрузки нового установленного пакета, так что это правильный способ использования API: subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'SomeProject']) но поскольку Python позволяет получить доступ к внутреннему API, и вы знаете, для чего используете API, вы можете захотеть использовать внутренний API в любом случае, например. если вы создаете собственный менеджер пакетов GUI с альтернативным ресурсом, например https://www.lfd.uci.edu /~ gohlke /pythonlibs /
Следующее решение УСТАРЕЛО, вместо того, чтобы голосовать за понижение, предлагается обновление. смотрите https://github.com/pypa/pip/issues/7498 для справки.
ОБНОВЛЕНИЕ: начиная с pip версии 10.x, в разделе get_installed_distributions()вместо usemain больше нет метода import pip orimport pip._internal as pip.
Было удаленоОБНОВЛЕНИЕ ca. v.18get_installed_distributions(). Вместо этого вы можете использовать generator freeze вот так:
from pip._internal.operations.freeze import freeze
print([package for package in freeze()])
# eg output ['pip==19.0.3']
Если вы хотите использовать pip внутри интерпретатора Python, попробуйте это:
import pip
package_names=['selenium', 'requests'] #packages to install pip.main(['install'] + package_names + ['--upgrade']) # --upgrade to install or update existing packages
Если вам нужно обновить каждый установленный пакет, используйте следующее:
import pip
for i in pip.get_installed_distributions(): pip.main(['install', i.key, '--upgrade'])
Если вы хотите остановить установку других пакетов в случае сбоя какой-либо установки, используйте это в одном-единственном pip.main([]) вызове:
import pip
package_names = [i.key for i in pip.get_installed_distributions()] pip.main(['install'] + package_names + ['--upgrade'])
Примечание: при установке из списка в файл с параметром -r / --requirement вам НЕ нужна функция open().
pip.main(['install', '-r', 'filename'])
Предупреждение: некоторые простые параметры --help могут привести к остановке интерпретатора python.
Любопытство: используя pip.exe, вы на самом деле все равно используете интерпретатор python и модуль pip. Если вы распаковываете pip.exe или pip3.exe независимо от того, python это 2.x или 3.x, внутри находится один и тот же файл __main__.py:
# -*- coding: utf-8 -*- import re import sys
from pip import main
if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) sys.exit(main())
Ответ 4
Чтобы запустить pip в Python 3.x, просто следуйте инструкциям на странице Python: Установка модулей Python.
python -m pip install SomePackage
или (если python 2 и python 3 находятся в одной системе):
python3 -m pip install SomePackage
Обратите внимание, что это выполняется из командной строки, а не из оболочки python (причина синтаксической ошибки в исходном вопросе).