web-dev-qa-db-ja.com

pyinstaller grpcというモジュールはありません

私の目標は、pyinstallerを使用して実行可能ファイルをビルドすることです。 python私がインポートをビルドしようとしているスクリプトgrpc。以下は、hello.pyと呼ばれる問題を示す例です。

  import grpc
  if __name__ == '__main__':
     print "hello world"

pyinstaller hello.pyを実行すると、予想されるdistディレクトリが生成されます。 ./dist/hello/helloのように実行すると、エラーImportError: No module named grpc.が表示されます

そこで、pip install grpcを使用してgrpcをインストールしました。アーティファクトを再構築すると、エラーImport grpc:No module named gevent.socketが表示されます。

オンラインで読むと、インストールする正しいアイテムは実際にはgrpcioとgrpcio-toolsであることがわかりました。そこで、pip uninstall grpcpip install grpciopip install grpcio-toolsを試しました。これを実行してアーティファクトを再構築すると、エラーImportError: No module named pkg_resourcesが発生しました。 pip install pkg_resourcesをしようとするとエラーが発生します:Could not find a version that satisfies the requirement pkg_resources

grpciogrpcio-toolsおよびgrpcをすべてインストールすると、同じエラーが発生します:Import grpc:No module named gevent.socket

これは、非常に単純なタスクであるように思われます。私は単にpyinstallerを使用してgrpcに依存するアーティファクトを構築したいのですが、どうすればよいですか?

8
Andrew Dawson

私は、grpcを使用してpythonアプリの配布可能なPyInstaller/cx_freezeの実行に取り組んでいます。

--hidden-import=pkg_resourcesを追加して、何が起こるか見てみましょうか?

これは私のためにそれを解決しました

4

私は同じ問題に直面しました。このドキュメントを参照しました: gRPC

ドキュメントに従って、最初にpipをバージョン9以降にアップグレードします。

次に、次のコマンドを使用します。

$ python -m pip install grpcio
$ python -m pip install grpcio-tools

それは私のために働いた!

11