2017-01-16 3 views
2

Я пытаюсь использовать cx_freeze для создания бинарного сегмента для веб-приложения, написанного на Python 3, с помощью пакета aiohttp.cxfreeze aiohttp не может импортировать compat

В основном я сделал:

cxfreeze server.py 

и получил dist выход

Но при запуске ./server двоичный, я получил следующее сообщение:

File "/usr/local/lib/python3.5/dist-packages/cx_Freeze/initscripts/__startup__.py", line 12, in <module> 
    __import__(name + "__init__") 
    File "/usr/local/lib/python3.5/dist-packages/cx_Freeze/initscripts/Console.py", line 24, in <module> 
    exec(code, m.__dict__) 
    File "server.py", line 1, in <module> 
    File "/usr/local/lib/python3.5/dist-packages/aiohttp/__init__.py", line 10, in <module> 
    from .protocol import * # noqa 
    File "/usr/local/lib/python3.5/dist-packages/aiohttp/protocol.py", line 17, in <module> 
    from . import errors, hdrs 
    File "/usr/local/lib/python3.5/dist-packages/aiohttp/errors.py", line 3, in <module> 
    from asyncio import TimeoutError 
    File "/usr/lib/python3.5/asyncio/__init__.py", line 21, in <module> 
    from .base_events import * 
    File "/usr/lib/python3.5/asyncio/base_events.py", line 32, in <module> 
    from . import compat 

ImportError: cannot import name 'compat' 

ответ

7

Надеюсь, вы были в состоянии исправить это уже, но для людей, которые ищут этот вопрос, как я, я отвечу:

Этот модуль compat является частью asyncio и не обнаруживается cx_Freeze. Я должен был добавить asyncio в packages список в build_exe опций в setup.py, чтобы заставить его быть включены:

setup(
    ... 
    options = { 
     'build_exe': { 
      'packages': ['encodings', 'asyncio'] 
     }, 
    } 
) 
+0

Следующая установил ее для меня в 'setup.py': ' buildOptions = Dict (пакеты = [ 'asyncio'], исключает = []) ' – danger89

+0

setup.py чего? использования? – KaramJaber