Подтвердить что ты не робот

Не удается установить gevent OSX 10.11

Попытка установить gevent с помощью Homebrew на последнюю публичную бета-версию OSX 10.11. При запуске установки он выводит следующие ошибки (Извините за большую стену кода, не уверен точно, где ошибка)

    clang -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I /opt/local/include -L /opt/local/lib -U__llvm__ -DLIBEV_EMBED=1 -DEV_COMMON= -DEV_CLEANUP_ENABLE=0 -DEV_EMBED_ENABLE=0 -DEV_PERIODIC_ENABLE=0 -Ibuild/temp.macosx-10.11-x86_64-2.7/libev -Ilibev -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c gevent/gevent.core.c -o build/temp.macosx-10.11-x86_64-2.7/gevent/gevent.core.o
  clang: warning: argument unused during compilation: '-L/opt/local/lib'
  In file included from gevent/gevent.core.c:249:
  In file included from gevent/libev.h:2:
  libev/ev.c:483:48: warning: '/*' within block comment [-Wcomment]
  /*#define MIN_INTERVAL  0.00000095367431640625 /* 1/2**20, good till 2200 */
                                                 ^
  libev/ev.c:1029:42: error: '_Noreturn' keyword must precede function declarator
    ecb_inline void ecb_unreachable (void) ecb_noreturn;
                                           ^~~~~~~~~~~~
    _Noreturn
  libev/ev.c:832:26: note: expanded from macro 'ecb_noreturn'
    #define ecb_noreturn   _Noreturn
                           ^
  libev/ev.c:1625:31: warning: 'extern' variable has an initializer [-Wextern-initializer]
    EV_API_DECL struct ev_loop *ev_default_loop_ptr = 0; /* needs to be initialised to make it a definition despite extern */
                                ^
  libev/ev.c:1796:7: warning: unused variable 'ocur_' [-Wunused-variable]
        array_needsize (ANPENDING, pendings [pri], pendingmax [pri], w_->pending, EMPTY2);
        ^
  libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
        int ecb_unused ocur_ = (cur);                                     \
                       ^
  libev/ev.c:1807:3: warning: unused variable 'ocur_' [-Wunused-variable]
    array_needsize (W, rfeeds, rfeedmax, rfeedcnt + 1, EMPTY2);
    ^
  libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
        int ecb_unused ocur_ = (cur);                                     \
                       ^
  libev/ev.c:1934:7: warning: unused variable 'ocur_' [-Wunused-variable]
        array_needsize (int, fdchanges, fdchangemax, fdchangecnt, EMPTY2);
        ^
  libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
        int ecb_unused ocur_ = (cur);                                     \
                       ^
  In file included from gevent/gevent.core.c:249:
  In file included from gevent/libev.h:2:
  In file included from libev/ev.c:2484:
  libev/ev_kqueue.c:50:3: warning: unused variable 'ocur_' [-Wunused-variable]
    array_needsize (struct kevent, kqueue_changes, kqueue_changemax, kqueue_changecnt, EMPTY2);
    ^
  libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
        int ecb_unused ocur_ = (cur);                                     \
                       ^
  In file included from gevent/gevent.core.c:249:
  In file included from gevent/libev.h:2:
  In file included from libev/ev.c:2490:
  libev/ev_poll.c:66:7: warning: unused variable 'ocur_' [-Wunused-variable]
        array_needsize (struct pollfd, polls, pollmax, pollcnt, EMPTY2);
        ^
  libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
        int ecb_unused ocur_ = (cur);                                     \
                       ^
  libev/ev.c:3648:34: warning: '&' within '|' [-Wbitwise-op-parentheses]
    fd_change (EV_A_ fd, w->events & EV__IOFDSET | EV_ANFD_REIFY);
                         ~~~~~~~~~~^~~~~~~~~~~~~ ~
  libev/ev.c:3648:34: note: place parentheses around the '&' expression to silence this warning
    fd_change (EV_A_ fd, w->events & EV__IOFDSET | EV_ANFD_REIFY);
                                   ^
                         (                      )
  libev/ev.c:3687:3: warning: unused variable 'ocur_' [-Wunused-variable]
    array_needsize (ANHE, timers, timermax, ev_active (w) + 1, EMPTY2);
    ^
  libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
        int ecb_unused ocur_ = (cur);                                     \
                       ^
  libev/ev.c:4367:5: warning: unused variable 'ocur_' [-Wunused-variable]
      array_needsize (ev_idle *, idles [ABSPRI (w)], idlemax [ABSPRI (w)], active, EMPTY2);
      ^
  libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
        int ecb_unused ocur_ = (cur);                                     \
                       ^
  libev/ev.c:4407:3: warning: unused variable 'ocur_' [-Wunused-variable]
    array_needsize (ev_prepare *, prepares, preparemax, preparecnt, EMPTY2);
    ^
  libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
        int ecb_unused ocur_ = (cur);                                     \
                       ^
  libev/ev.c:4445:3: warning: unused variable 'ocur_' [-Wunused-variable]
    array_needsize (ev_check *, checks, checkmax, checkcnt, EMPTY2);
    ^
  libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
        int ecb_unused ocur_ = (cur);                                     \
                       ^
  libev/ev.c:4592:3: warning: unused variable 'ocur_' [-Wunused-variable]
    array_needsize (ev_fork *, forks, forkmax, forkcnt, EMPTY2);
    ^
  libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
        int ecb_unused ocur_ = (cur);                                     \
                       ^
  libev/ev.c:4675:3: warning: unused variable 'ocur_' [-Wunused-variable]
    array_needsize (ev_async *, asyncs, asyncmax, asynccnt, EMPTY2);
    ^
  libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
        int ecb_unused ocur_ = (cur);                                     \
                       ^
  14 warnings and 1 error generated.
  error: command 'clang' failed with exit status 1

  ----------------------------------------
  Failed building wheel for gevent
Failed to build gevent
Installing collected packages: gevent
  Running setup.py install for gevent
    Complete output from command /usr/local/opt/python/bin/python2.7 -c "import setuptools, tokenize;__file__='/private/var/folders/q8/1c24n_wj6kzc6kgl7629pwyh0000gn/T/pip-build-3zCPVx/gevent/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/q8/1c24n_wj6kzc6kgl7629pwyh0000gn/T/pip-9VpZCX-record/install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_py
    running build_ext
    building 'gevent.core' extension
    clang -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I /opt/local/include -L /opt/local/lib -U__llvm__ -DLIBEV_EMBED=1 -DEV_COMMON= -DEV_CLEANUP_ENABLE=0 -DEV_EMBED_ENABLE=0 -DEV_PERIODIC_ENABLE=0 -Ibuild/temp.macosx-10.11-x86_64-2.7/libev -Ilibev -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c gevent/gevent.core.c -o build/temp.macosx-10.11-x86_64-2.7/gevent/gevent.core.o
    clang: warning: argument unused during compilation: '-L/opt/local/lib'
    In file included from gevent/gevent.core.c:249:
    In file included from gevent/libev.h:2:
    libev/ev.c:483:48: warning: '/*' within block comment [-Wcomment]
    /*#define MIN_INTERVAL  0.00000095367431640625 /* 1/2**20, good till 2200 */
                                                   ^
    libev/ev.c:1029:42: error: '_Noreturn' keyword must precede function declarator
      ecb_inline void ecb_unreachable (void) ecb_noreturn;
                                             ^~~~~~~~~~~~
      _Noreturn
    libev/ev.c:832:26: note: expanded from macro 'ecb_noreturn'
      #define ecb_noreturn   _Noreturn
                             ^
    libev/ev.c:1625:31: warning: 'extern' variable has an initializer [-Wextern-initializer]
      EV_API_DECL struct ev_loop *ev_default_loop_ptr = 0; /* needs to be initialised to make it a definition despite extern */
                                  ^
    libev/ev.c:1796:7: warning: unused variable 'ocur_' [-Wunused-variable]
          array_needsize (ANPENDING, pendings [pri], pendingmax [pri], w_->pending, EMPTY2);
          ^
    libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
          int ecb_unused ocur_ = (cur);                                     \
                         ^
    libev/ev.c:1807:3: warning: unused variable 'ocur_' [-Wunused-variable]
      array_needsize (W, rfeeds, rfeedmax, rfeedcnt + 1, EMPTY2);
      ^
    libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
          int ecb_unused ocur_ = (cur);                                     \
                         ^
    libev/ev.c:1934:7: warning: unused variable 'ocur_' [-Wunused-variable]
          array_needsize (int, fdchanges, fdchangemax, fdchangecnt, EMPTY2);
          ^
    libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
          int ecb_unused ocur_ = (cur);                                     \
                         ^
    In file included from gevent/gevent.core.c:249:
    In file included from gevent/libev.h:2:
    In file included from libev/ev.c:2484:
    libev/ev_kqueue.c:50:3: warning: unused variable 'ocur_' [-Wunused-variable]
      array_needsize (struct kevent, kqueue_changes, kqueue_changemax, kqueue_changecnt, EMPTY2);
      ^
    libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
          int ecb_unused ocur_ = (cur);                                     \
                         ^
    In file included from gevent/gevent.core.c:249:
    In file included from gevent/libev.h:2:
    In file included from libev/ev.c:2490:
    libev/ev_poll.c:66:7: warning: unused variable 'ocur_' [-Wunused-variable]
          array_needsize (struct pollfd, polls, pollmax, pollcnt, EMPTY2);
          ^
    libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
          int ecb_unused ocur_ = (cur);                                     \
                         ^
    libev/ev.c:3648:34: warning: '&' within '|' [-Wbitwise-op-parentheses]
      fd_change (EV_A_ fd, w->events & EV__IOFDSET | EV_ANFD_REIFY);
                           ~~~~~~~~~~^~~~~~~~~~~~~ ~
    libev/ev.c:3648:34: note: place parentheses around the '&' expression to silence this warning
      fd_change (EV_A_ fd, w->events & EV__IOFDSET | EV_ANFD_REIFY);
                                     ^
                           (                      )
    libev/ev.c:3687:3: warning: unused variable 'ocur_' [-Wunused-variable]
      array_needsize (ANHE, timers, timermax, ev_active (w) + 1, EMPTY2);
      ^
    libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
          int ecb_unused ocur_ = (cur);                                     \
                         ^
    libev/ev.c:4367:5: warning: unused variable 'ocur_' [-Wunused-variable]
        array_needsize (ev_idle *, idles [ABSPRI (w)], idlemax [ABSPRI (w)], active, EMPTY2);
        ^
    libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
          int ecb_unused ocur_ = (cur);                                     \
                         ^
    libev/ev.c:4407:3: warning: unused variable 'ocur_' [-Wunused-variable]
      array_needsize (ev_prepare *, prepares, preparemax, preparecnt, EMPTY2);
      ^
    libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
          int ecb_unused ocur_ = (cur);                                     \
                         ^
    libev/ev.c:4445:3: warning: unused variable 'ocur_' [-Wunused-variable]
      array_needsize (ev_check *, checks, checkmax, checkcnt, EMPTY2);
      ^
    libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
          int ecb_unused ocur_ = (cur);                                     \
                         ^
    libev/ev.c:4592:3: warning: unused variable 'ocur_' [-Wunused-variable]
      array_needsize (ev_fork *, forks, forkmax, forkcnt, EMPTY2);
      ^
    libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
          int ecb_unused ocur_ = (cur);                                     \
                         ^
    libev/ev.c:4675:3: warning: unused variable 'ocur_' [-Wunused-variable]
      array_needsize (ev_async *, asyncs, asyncmax, asynccnt, EMPTY2);
      ^
    libev/ev.c:1758:22: note: expanded from macro 'array_needsize'
          int ecb_unused ocur_ = (cur);                                     \
                         ^
    14 warnings and 1 error generated.
    error: command 'clang' failed with exit status 1

    ----------------------------------------
Command "/usr/local/opt/python/bin/python2.7 -c "import setuptools, tokenize;__file__='/private/var/folders/q8/1c24n_wj6kzc6kgl7629pwyh0000gn/T/pip-build-3zCPVx/gevent/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/q8/1c24n_wj6kzc6kgl7629pwyh0000gn/T/pip-9VpZCX-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/q8/1c24n_wj6kzc6kgl7629pwyh0000gn/T/pip-build-3zCPVx/gevent
4b9b3361

Ответ 1

используйте CFLAGS='-std=c99' pip install gevent, чтобы исправить это.

в OS X 10.11, clang использует значение c11 по умолчанию, поэтому просто верните его обратно в c99.

Ответ 2

Я столкнулся с той же проблемой на моем OSX 10.10.5, пытаясь установить flask-socketio, который имеет gevent как зависимость, но

sudo CFLAGS='-std=c99' pip install flask-socketio

дал мне

Successfully installed flask-socketio-0.6.0 gevent-1.0.2 gevent-socketio-0.3.6 gevent-websocket-0.9.5

Таким образом, ответ на тоникубат тоже работал для этого.

Ответ 4

В Mac OS X El Capitan мне приходилось делать и то, что было упомянуто в более ранних ответах, установить переменную CFLAGS и понизить gevent, но мне пришлось использовать версию 1.0, чтобы очистить ошибки компилятора.

CFLAGS='-std=c99' pip install gevent==1.0

Ответ 5

Как описано в инструкции PyPI,

pip install --pre gevent

следует установить версию кандидата на выпуск (1.1rc4 от 22 февраля 2016 г.), которая работает для OS X 10.11.

Ответ 6

В это время выпуск gevent 1.1.0 выпущен в виде двоичного диска для OS X, а pip установит его по умолчанию. Двоичное колесо для gevent 1.0.2 для OS X также доступно для тех, которые не могут перейти на более новую версию. Оба они были протестированы для установки на OS X 10.11 с Python 2.6 и 2.7, которые Apple распространяет, а также на 2,7 Python, загруженные с python.org. (Если у вас возникли проблемы с установкой дискретных колес, вам может потребоваться обновить вашу версию протокола.)

Поэтому больше не нужно устанавливать какие-либо специальные CFLAGS, если вы не должны компилировать 1.0.2 из источника. (1.1.0 не страдает от этой проблемы.)

Обратите внимание, что колеса распределены для "узких" Unicode-сборок Python, поэтому, если вы используете "широкую" сборку, вам нужно будет скомпилировать ее из источника. В этом случае для gevent 1.0.2 (но не 1.1.0.) Требуется установить CFLAGS = "- std = c99" )