Почему пакет grpc не устанавливается в моей системе?

Привет, я пытаюсь установить пакет grpc Python через pip. На самом деле он предназначен для установки с помощью сценария сборки для другой установки, которую я выполняю, но сценарий продолжал давать сбой, поэтому я решил сделать это сам.

Вот что я получаю:

❯ pip3 install grpc
Defaulting to user installation because normal site-packages is not writeable
Collecting grpc
  Using cached grpc-1.0.0.tar.gz (5.2 kB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [6 lines of output]
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-_au3535m/grpc_0b2b1ce7560943288874cf94aa72394a/setup.py", line 33, in <module>
          raise RuntimeError(HINT)
      RuntimeError: Please install the official package with: pip install grpcio
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

Я попробовал следовать подсказке:

pip install grpcio

и всё прошло без проблем. Я также посетил множество форумов, выполнив поиск по ключевым словам: «setup.py egg_info не был выполнен успешно», и все предлагали сделать:

pip install --upgrade pip
pip install --upgrade setuptools

Я попробовал оба и вот что у меня получилось:

Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: pip in /home/utl/.local/lib/python3.10/site-packages (24.0)
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (69.5.1)

И все же, когда я потом запускаю pip install grpc, это не работает, и я получаю ту же ошибку, что и раньше. Я уже довольно давно борюсь со сценарием сборки, поэтому буду очень благодарен за любую помощь.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
235
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не можете (и не должны пытаться) установить пакет grpc PyPI, потому что это всего лишь заглушка, которая предлагает вместо этого установить grpcio.

Пакет grpcio PyPI предоставляет пакет grpc Python:

# pip install grpcio
Collecting grpcio
Successfully installed grpcio-1.63.0
# python
Python 3.12.1 (main, Jan 17 2024, 06:18:08) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import grpc
>>> grpc
<module 'grpc' from '/usr/local/lib/python3.12/site-packages/grpc/__init__.py'>
>>>

Если у вас есть сценарий сборки, который пытается установить grpc, значит, этот сценарий сломан и/или устарел.

Более того, я считаю, что grpc — это версия пакета для Python 2, и она была намеренно заменена на grpcio для Python 3.

nigh_anxiety 02.05.2024 15:11

@nigh_anxiety Мм, ну grpcio==1.41.1 (с 2021 года) устанавливается и на Python 2.7.

AKX 02.05.2024 15:14

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