Mon objectif est de construire un exécutable à l'aide de pyinstaller. Le script python j'essaye de construire des importations grpc. Ce qui suit est un exemple qui illustre le problème appelé hello.py.
import grpc
if __name__ == '__main__':
print "hello world"
Je fais pyinstaller hello.py
et qui produit le répertoire dist attendu. Ensuite, je le lance comme ./dist/hello/hello
et j'obtiens une erreur ImportError: No module named grpc.
Alors j'ai installé grpc en utilisant pip install grpc
. Lorsque je reconstruis l'artefact, j'obtiens maintenant une erreur Import grpc:No module named gevent.socket
.
La lecture en ligne a indiqué que les éléments corrects à installer étaient en fait grpcio et grpcio-tools. J'ai donc essayé pip uninstall grpc
pip install grpcio
et pip install grpcio-tools
. Faire cela et reconstruire l'artefact m'a donné une erreur ImportError: No module named pkg_resources
. Essayer pip install pkg_resources
donne une erreur: Could not find a version that satisfies the requirement pkg_resources
Avoir tout grpcio
grpcio-tools
et grpc
install donne la même erreur: Import grpc:No module named gevent.socket
Cela semble être une tâche très simple. Je veux simplement utiliser pyinstaller pour créer un artefact dépendant de grpc, comment faire?
Je travaille à faire un PyInstaller/cx_freeze distribuable d'une application python utilisant grpc.
Pouvez-vous essayer d'ajouter --hidden-import=pkg_resources
et voyez ce qui se passe?
Cela l'a résolu pour moi
J'ai fait face au même problème. J'ai référé ce document: gRPC
Selon la documentation, mettez d'abord à jour votre pip vers la version 9 ou supérieure.
Utilisez ensuite les commandes suivantes:
$ python -m pip install grpcio
$ python -m pip install grpcio-tools
Ça a marché pour moi!