сделать код Python grpc для exe с помощью cx_Freeze: нет модуля с именем 'pkg_resources' - PullRequest
0 голосов
/ 19 ноября 2018

Я делаю сервер GRPC с Python. Моя цель - создать исполняемый файл, используя cx_Freeze.

После того, как я запустил greeter_server.exe с помощью cx_Freeze, при запуске 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 install grp pip install grpcio pip install grpcio-tools

pip install --upgrade setuptools pip install --upgrade распространить

Но когда я попытался установить pip - обновить дистрибутив, я встретил эту ошибку.

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, Python 3.6.7. (Потому что я должен использовать тензор потока)

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

pkg_resources необходимо добавить в список packages опций build_exe:

build_exe_options = {'packages': ['pkg_resources']}

Примечание: в списке packages могут потребоваться другие записи для того, чтобы скрипт установки работал (эти записи находятся в собственном ответе ОП, но отсутствуют в скрипте установки вопроса).

0 голосов
/ 28 ноября 2018

После редактирования файла setup.py, как показано ниже, он работает.

build_exe_options = {
    'packages':['grpc','pkg_resources', 'numpy', 'tensorflow'],
}
...