使用 cx_Freeze 使 grpc python 代码执行:没有名为 'pkg_resources' 的模块
make grpc python code to exe with cx_Freeze : No module named 'pkg_resources'
我正在用 python 制作 grpc 服务器。我的目标是使用 cx_Freeze.
构建一个可执行文件
在我使用cx_Freeze制作greeter_server.exe之后,当我运行greeter_server.exe时,我遇到了这个错误。
Traceback (most recent call last):
File “greeter_server.py", line 19, in <module>
File “c:\users\User\anaconda3\envs\tensorflow\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module exec(bytecode, module.__dict__)
File “site-packages\grpc\__init__.py", line 22, in <module>
File “src\python\grpcio\grpc\_cython\cygrpc.pyx", line 18, in init grpc._cython.cygrpc
ModuleNotFoundError: No module named ‘pkg_resources'
我的setup.py是这样的
import sys
from cx_Freeze import setup, Executable
build_exe_options = {}
setup(
name='py freeze test',
version='0.0.1',
description="greeter_server function test",
author="ray",
options={'build_exe':build_exe_options},
executables=[Executable("greeter_server.py")],
)
我试了很多次。
pip 安装 grp
pip 安装 grpcio
pip 安装 grpcio-tools
pip install --upgrade setuptools
pip install --upgrade distribute
但是当我尝试 pip install —upgrade distribute 时遇到这个错误。
Collecting distribute
Using cached https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\setuptools\__init__.py", line 2, in <module>
from setuptools.extension import Extension, Library
File "C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\setuptools\extension.py", line 5, in <module>
from setuptools.dist import _get_unpatched
File "C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\setuptools\dist.py", line 7, in <module>
from setuptools.command.install import install
File "C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\setuptools\command\__init__.py", line 8, in <module>
from setuptools.command import install_scripts
File "C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\setuptools\command\install_scripts.py", line 3, in <module>
from pkg_resources import Distribution, PathMetadata, ensure_directory
File "C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\pkg_resources.py", line 1518, in <module>
register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider)
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\
我使用的是 Anaconda3-5.2.0,Python3.6.7。 (因为我要用tensorflow)
任何帮助将不胜感激。
像下面那样编辑 setup.py 文件后,它起作用了。
build_exe_options = {
'packages':['grpc','pkg_resources', 'numpy', 'tensorflow'],
}
pkg_resources
需要添加到 build_exe
选项的 packages
列表中:
build_exe_options = {'packages': ['pkg_resources']}
备注:packages
列表中可能需要其他条目才能使设置脚本正常工作(这些条目可在 OP 自己的答案中找到,但在问题的设置脚本中缺失)。
我正在用 python 制作 grpc 服务器。我的目标是使用 cx_Freeze.
构建一个可执行文件在我使用cx_Freeze制作greeter_server.exe之后,当我运行greeter_server.exe时,我遇到了这个错误。
Traceback (most recent call last):
File “greeter_server.py", line 19, in <module>
File “c:\users\User\anaconda3\envs\tensorflow\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module exec(bytecode, module.__dict__)
File “site-packages\grpc\__init__.py", line 22, in <module>
File “src\python\grpcio\grpc\_cython\cygrpc.pyx", line 18, in init grpc._cython.cygrpc
ModuleNotFoundError: No module named ‘pkg_resources'
我的setup.py是这样的
import sys
from cx_Freeze import setup, Executable
build_exe_options = {}
setup(
name='py freeze test',
version='0.0.1',
description="greeter_server function test",
author="ray",
options={'build_exe':build_exe_options},
executables=[Executable("greeter_server.py")],
)
我试了很多次。
pip 安装 grp pip 安装 grpcio pip 安装 grpcio-tools
pip install --upgrade setuptools pip install --upgrade distribute
但是当我尝试 pip install —upgrade distribute 时遇到这个错误。
Collecting distribute
Using cached https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\setuptools\__init__.py", line 2, in <module>
from setuptools.extension import Extension, Library
File "C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\setuptools\extension.py", line 5, in <module>
from setuptools.dist import _get_unpatched
File "C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\setuptools\dist.py", line 7, in <module>
from setuptools.command.install import install
File "C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\setuptools\command\__init__.py", line 8, in <module>
from setuptools.command import install_scripts
File "C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\setuptools\command\install_scripts.py", line 3, in <module>
from pkg_resources import Distribution, PathMetadata, ensure_directory
File "C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\pkg_resources.py", line 1518, in <module>
register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider)
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\User\AppData\Local\Temp\pip-install-ao7m4k8f\distribute\
我使用的是 Anaconda3-5.2.0,Python3.6.7。 (因为我要用tensorflow)
任何帮助将不胜感激。
像下面那样编辑 setup.py 文件后,它起作用了。
build_exe_options = {
'packages':['grpc','pkg_resources', 'numpy', 'tensorflow'],
}
pkg_resources
需要添加到 build_exe
选项的 packages
列表中:
build_exe_options = {'packages': ['pkg_resources']}
备注:packages
列表中可能需要其他条目才能使设置脚本正常工作(这些条目可在 OP 自己的答案中找到,但在问题的设置脚本中缺失)。