私の目標は、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 grpc
pip install grpcio
とpip install grpcio-tools
を試しました。これを実行してアーティファクトを再構築すると、エラーImportError: No module named pkg_resources
が発生しました。 pip install pkg_resources
をしようとするとエラーが発生します:Could not find a version that satisfies the requirement pkg_resources
grpcio
grpcio-tools
およびgrpc
をすべてインストールすると、同じエラーが発生します:Import grpc:No module named gevent.socket
これは、非常に単純なタスクであるように思われます。私は単にpyinstallerを使用してgrpcに依存するアーティファクトを構築したいのですが、どうすればよいですか?
私は、grpcを使用してpythonアプリの配布可能なPyInstaller/cx_freezeの実行に取り組んでいます。
--hidden-import=pkg_resources
を追加して、何が起こるか見てみましょうか?
これは私のためにそれを解決しました
私は同じ問題に直面しました。このドキュメントを参照しました: gRPC
ドキュメントに従って、最初にpipをバージョン9以降にアップグレードします。
次に、次のコマンドを使用します。
$ python -m pip install grpcio
$ python -m pip install grpcio-tools
それは私のために働いた!