2016-01-11 2 views
2

Как говорится в этом вопросе, я собрал grpc из источника, а также сделал sudo pip install grpcio, однако which grpc_python_plugin ничего не возвращает , Это проблема, потому что для примера python grpc для route_guide требуется, чтобы я запускал protoc -I . --python_out=. --grpc_out=. --plugin=protoc-gen-grpc='which grpc_python_plugin' ./route_guide.proto , чтобы сгенерировать заглушки python. Так, which grpc_python_plugin не возвращает ничего, я получаю следующее сообщение об ошибке:Python grpc protobuf stubs проблема генерации: --grpc_out: protoc-gen-grpc: плагин с кодом состояния 1

: program not found or is not executable 
--grpc_out: protoc-gen-grpc: Plugin failed with status code 1. 

Если я сократить команду я пытаюсь бежать: protoc -I . --python_out=. ./route_guide.proto, он генерирует route_guide_pb2.py файл, но без обслуживающего и Окурка классы, методы сервера и заглушки. Ofc, эти методы необходимы, если вы хотите использовать grpc для любых целей. Любая помощь будет оценена по достоинству.

ответ

1

Похоже, что у вас нет /usr/local/bin в вашем PATH; make install использует префикс /usr/local по умолчанию. Альтернативно, после компиляции grpc_python_plugin должно быть указано bins/opt/.

1

Для решения этой проблемы убедитесь, что в вашей системе установлено grpc_python_plugin. На питона платформ pip install grpcio не устанавливает платформы конкретных плагинов, так что вы должны установить их отдельно, приняв следующие шаги

  • а) cd grpc (хранилище КПГР)
  • б) git submodule update --init
  • с) make grpc_python_plugin

Это построит плагин python для grpc. Теперь, выяснить расположение grpc_python_plugin на вашей системе, позволяет называть его binary_path

Если binary_path находится под $PATH переменной окружения (echo $PATH), вы хорошо идти. Однако, если он не находится под переменной $ PATH, у вас есть два варианта

Update run_codegen.sh к --plugin=protoc-gen-grpc=binary_path или скопируйте бинарный файл в одном из мест, отслеживаемых $PATH переменной окружения

+0

Привет, Как я могу сделать то же самое для Java? Заготовки для Java не генерируются. – Ammad

Смежные вопросы