Чому "встановлення піп" всередині Python викликає SyntaxError?


232

Я намагаюся використовувати pip для встановлення пакету. Я намагаюся бігти pip installз оболонки Python, але я отримую SyntaxError. Чому я отримую цю помилку? Як використовувати pip для встановлення пакета?

>>> pip install selenium
              ^
SyntaxError: invalid syntax

Відповіді:


297

pip запускається з командного рядка, а не інтерпретатора Python. Це програма, яка встановлює модулі, тому ви можете використовувати їх з Python. Після встановлення модуля, ви можете відкрити оболонку Python і зробити import selenium.

Оболонка Python не є командним рядком, це інтерактивний інтерпретатор. Ви вводите в нього код Python, а не команди.


2
Дякую за роз’яснення, але я все ще не можу його запустити. Де саме це? Це дає мені помилку "піп не розпізнається" (тому що я не є правильним режисером). Він був встановлений у \ site-пакетах, але я думаю, що це подумав, і я не можу знайти жодного pip.exe
Nacht

25
@Nacht - pipбуде в каталозі сценаріїв встановлення вашого python, тому ви захочете додати його до свого шляху. Додайте C:\Python32\scriptsдо свого PATH. Змініть шлях за необхідності залежно від того, де його встановили.
wkl

3
Насправді pip.exe у Windows - це скрипт python, як і інші в каталозі / scriptpts, але його обговорюють у exe, щоб запустити його з інтерпретатором python за замовчуванням. Відкривши pip.exe за допомогою 7-zip, ви побачите головний .py імпорт файлів pip, sys та re ... (і там ви знайдете відповідь, як запустити його в оболонці python) -> pip є звичайним модуль пітона. Не забувайте, що Windows не була першою платформою, що підтримує python, був Linux, а python - це частина ОС.
Зиднар

1
Я знаю, що мені довелося це робити з командного рядка (а не командного рядка python). Це було після зміни каталогу в розташування python.exe, а потім потрібно було поставити тип файлу на pip3. У моєму випадку я був після запитів на роботу HTTP. А саме: python pip3.exe встановлює запити <--- це спрацювало чудово, повторив те саме для pytz модуля
natur3

106

Використовуйте командний рядок, а не оболонку Python (DOS, PowerShell в Windows).

C:\Program Files\Python2.7\Scripts> pip install XYZ

Якщо ви встановили Python у свій PATH за допомогою останніх інсталяторів, вам не потрібно знаходитись у цій папці, щоб запустити pip

Термінал в Mac або Linux

$ pip install XYZ

3
Дякуємо за те, що включили C: ...., допомогли мені зрозуміти, куди мені потрібно CD, оскільки ви не можете просто відкрити командний рядок і ввести pip.
hammythepig

2
FYI Я встановив Python, який я просто не встановив PATH. Мені довелося це зробити вручну, вказуючи на шлях встановлення у%APPDATA%
UuDdLrLrSs

61

Як @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/isissue/7498 для довідок.


UPDATE : Оскільки піп версія 10.x немає більш get_installed_distributions()чи mainметод під import pip натомість використовувати import pip._internal as pip .

ОНОВЛЕННЯ ca. v.18 get_installed_distributions() видалено Замість цього ви можете використовувати такий генератор 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можуть спричинити зупинку інтерпретатора пітона.

Цікавість: Використовуючи 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())

5
Це працює в оболонці Python, тому я думаю, що це має бути прийнятою відповіддю.
Франсуа М.

5
Це саме те, що я сподівався знайти, коли гуглю цю проблему.
Андрій Бреза

1
Чудова відповідь, і її обов'язково слід включити сюди, але я не погоджуюсь, що це має бути прийнята відповідь, оскільки користувач явно намагався змусити роботу всюдисущого синтаксису "встановити піп". Оскільки цей синтаксис не працює з цим методом, це питання безпосередньо не вирішує. Це може бути більш корисним , ніж зазвичай відповідають , хоча :)
Dan

Поняття не маю, що насправді малося на увазі ОП, але ця відповідь була справді пізньою відповіддю, тому не важливо, чи прийнята вона тут.
Зиднар

@ Zydnar, погодився - моя відповідь була Франсуа, який сказав, що це має бути прийнятою відповіддю. Я розмістив свої міркування, чому ні. Однак, я все ще думаю, що це чудовий пост.
Дан

53

Щоб запустити pip в Python 3.x, просто дотримуйтесь інструкцій на сторінці Python : Встановлення модулів Python .

python -m pip install SomePackage

Зауважте, що це запускається з командного рядка, а не оболонки python (причина помилки синтаксису в оригінальному запитанні).


1
Я все ще отримую недійсний синтаксис. Я використовую IPython на ПК з Windows 10. Будь-які думки?
DataGirl

На цій сторінці є інструкції з установки IPython: ipython.readthedocs.io/en/stable/install/index.html $ pip install ipython. Імовірно, що перекладається на $ python -m pip install ipython
Dan

1
Це нічого не відповідає про синтаксичну помилку
OneCricketeer

Це вже було охоплено іншими відповідями, але я додав це зараз. Моя відповідь була лише доповненням для 3.x.
Dan

працював для мене на Windows 10 - також порадив мені оновити pip відповідно до попереднього коментаря :)
Kdean571

2

Спочатку я теж зіткнувся з цією самою проблемою, я встановив python, і коли я запускаю pipкоманду, він видав мені помилку, як показано на малюнку нижче.

введіть тут опис зображення

Переконайтеся, що шлях піп-коду додається у змінні середовища Для мене шлях встановлення python та pip - це ::
Python: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\
pip:C:\Users\fhhz\AppData\Local\Programs\Python\Python38\Scripts
Обидва ці шляху були додані до шляху в змінних середовища.

Тепер відкрийте нове вікно cmd і введіть pip, ви повинні бачити екран, як показано нижче.

введіть тут опис зображення

Тепер введіть pip install <<package-name>>. Тут я встановлюю пакет-шпигун, тому мій вислів командного рядка буде таким, pip install spyderі ось виходить мій запущений екран ..

введіть тут опис зображення

і я сподіваюся, що ми зробили це з цим !!


1
Це не відповідає на запитання.
sinoroc

0

вам потрібно набрати його в cmd, а не в IDLE. becuse IDLE не є командним рядком, якщо ви хочете встановити щось із IDLE, введіть це

>>>from pip.__main__ import _main as main
>>>main(#args splitted by space in list example:['install', 'requests'])

це викликає pip, як pip <commands>у терміналі. Команди будуть розділені пробілами, до яких ви робите там.


Це застаріла відповідь, оскільки про pip версії 10.0. ImportError: cannot import name mainвикористовуючи pip v19.0.3
Zydnar

-1

Програмно в даний час працює наступне . Я бачу всі відповіді після публікації 10.0 і всі, але жодна з них не є для мене правильним шляхом. У Kaggle точно, цей підручник працює

from pip._internal import main as _main

package_names=['pandas'] #packages to install
_main(['install'] + package_names + ['--upgrade']) 

чому не використовуйте Джусі: з pip .__ main__ import _main?
Matthijs990

-3

Спробуйте оновити pip за допомогою команди нижче та повторіть спробу

python -m pip install -U pip

оновлення файлу pip нехай працює в оболонці python
Matthijs990,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.