我的目标是使用 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工具。所以我尝试了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
根据文档,首先将您的 pip 升级到版本 9 或更高版本。
然后使用以下命令:
$ python -m pip install grpcio
$ python -m pip install grpcio-tools
它对我有用!
我正在使用grpc做一个PyInstaller/cx_freeze可分发的python应用程序。
您可以尝试添加--hidden-import=pkg_resources
,看看会发生什么吗?
这为我解决了它