I’m making grpc server with python. My goal is to build an executable using cx_Freeze.
After I make greeter_server.exe using cx_Freeze, when I run greeter_server.exe, I meet this error.
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'
My setup.py is like this.
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")],
)
I tried a lot of tries.
pip install grp pip install grpcio pip install grpcio-tools
pip install --upgrade setuptools pip install --upgrade distribute
But when I tried pip install —upgrade distribute I meet this error.
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\
I’m using Anaconda3-5.2.0, Python 3.6.7. (Because I have to use tensorflow)
Any help will be appreciated.
pkg_resources
needs to be added to the packages
list of the build_exe
options:
build_exe_options = {'packages': ['pkg_resources']}
Remark: other entries might be necessary in the packages
list in order that the setup script works (these entries are found in the OP's own answer but are missing in the setup script of the question).