Как я могу установить библиотеку Python 'gevent' на Mac OS X Lion - PullRequest
63 голосов
/ 03 октября 2011

Библиотека Python gevent, версия 0.13.6 (текущая версия для PyPI) не будет pip install на OS X Lion, Python 2.7 (и, возможно, других). На Snow Leopard работает нормально.* Как я могу установить эту библиотеку?

Бонусные баллы, если это можно сделать с помощью pip install, а не ручным или пользовательским процессом, потому что тогда он будет хорошо играть с автоматическими сборками.* Вот мой pip install вывод:

pip install gevent
Downloading/unpacking gevent
  Running setup.py egg_info for package gevent

Requirement already satisfied (use --upgrade to upgrade): greenlet in ./tl_env/lib/python2.7/site-packages (from gevent)
Installing collected packages: gevent
  Running setup.py install for gevent
    building 'gevent.core' extension
    gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c gevent/core.c -o build/temp.macosx-10.6-intel-2.7/gevent/core.o
    In file included from gevent/core.c:225:
    gevent/libevent.h:9:19: error: event.h: No such file or directory
    gevent/libevent.h:38:20: error: evhttp.h: No such file or directory
    gevent/libevent.h:39:19: error: evdns.h: No such file or directory
    gevent/core.c:361: error: field ‘ev’ has incomplete type
    gevent/core.c:741: warning: parameter names (without types) in function declaration
    gevent/core.c: In function ‘__pyx_f_6gevent_4core___event_handler’:
    gevent/core.c:1619: error: ‘EV_READ’ undeclared (first use in this function)
    gevent/core.c:1619: error: (Each undeclared identifier is reported only once
    gevent/core.c:15376: warning: assignment makes pointer from integer without a cast
   [... about 1000 more lines of compiler errors...]
    gevent/core.c:15385: error: dereferencing pointer to incomplete type
    gevent/core.c: In function ‘__pyx_pf_6gevent_4core_4http___init__’:
    gevent/core.c:15559: warning: assignment makes pointer from integer without a cast
    gevent/core.c: At top level:
    gevent/core.c:21272: error: expected ‘)’ before ‘val’
    lipo: can't figure out the architecture type of: /var/folders/s5/t94kn0p10hdgxzx9_9sprpg40000gq/T//cczk54q7.out
    error: command 'gcc-4.2' failed with exit status 1
    Complete output from command /Users/jacob/code/toplevel/tl_env/bin/python -c "import setuptools;__file__='/Users/jacob/code/toplevel/tl_env/build/gevent/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /var/folders/s5/t94kn0p10hdgxzx9_9sprpg40000gq/T/pip-s2hPd3-record/install-record.txt --install-headers /Users/jacob/code/toplevel/tl_env/bin/../include/site/python2.7:
    running install

running build

running build_py

running build_ext

building 'gevent.core' extension

gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c gevent/core.c -o build/temp.macosx-10.6-intel-2.7/gevent/core.o

Ответы [ 10 ]

114 голосов
/ 03 октября 2011

Не публикуйте всю вещь!Это слишком много!В 90% случаев первой ошибки достаточно ...

gevent/libevent.h:9:19: error: event.h: No such file or directory

Это означает, что библиотека с заголовком event.h не установлена.Библиотека называется libevent ( веб-сайт ).

В общем, ошибки компиляции, подобные этим, являются недостатком скриптов сборки.Сценарий сборки должен выдавать сообщение об ошибке, что libevent не установлен, и это ошибка, которую он не сделал.

Чтобы получить libevent из MacPorts, а затем вручную сообщить компилятору с переменной среды CFLAGS, куданаходите event.h и libevent во время работы pip.

sudo port install libevent
CFLAGS="-I /opt/local/include -L /opt/local/lib" pip install gevent

Вы также можете использовать homebrew для установки libevent: brew install libevent
(из комментария Дэвида Вулевер)

24 голосов
/ 30 октября 2015
CFLAGS='-std=c99' pip install gevent

См. В: Не удается установить Gevent OSX 10.11

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

16 голосов
/ 24 октября 2013

Через некоторое время я понял, что пути для указанной выше переменной CFLAGS работают при установке libevent из порта, но не из brew. У меня работает следующее (на OSX Mavericks):

$ brew install libevent
$ export CFLAGS="-I /usr/local/Cellar/libevent/2.0.21/include -L /usr/local/Cellar/libevent/2.0.21/lib"
$ pip install gevent
6 голосов
/ 09 августа 2013

Я нашел самый простой способ:

установить libevent с помощью homebrew

$ brew install libevent

установить Gevent

$ pip install gevent

Это был единственный способ заставить его работать.

4 голосов
/ 23 февраля 2013

Нашел этот ответ при поиске справки по установке на Snow Leopard, опубликовав это на тот случай, если кто-то еще столкнется с такой же проблемой.

Я установил libevent через macports.

export CFLAGS= -I / opt / local / включить экспорт LDFLAGS = -L / opt / local / lib sudo pip install gevent

2 голосов
/ 28 августа 2013

У меня был libevent, установленный через brew, и он тоже не удался, то, что работало, было похоже на то, что сделал Стивен, но указывало на установку brew по умолчанию:

CFLAGS = -I / usr / local / include LDFLAGS = -L/ usr / local / lib pip install gevent

0 голосов
/ 23 сентября 2018

Я использую MacOs High Sierra (10.13.3) Сначала я сделал: brew install libevent

Я обновил свою версию pip до pip-18.0. затем попытался установить снова со следующим: -

pip install gevent

это сработало.

0 голосов
/ 20 сентября 2015
sudo pip install cython git+git://github.com/gevent/gevent.git#egg=gevent
0 голосов
/ 06 сентября 2015

Я использую оболочку virtualenv и virtualenv, и поэтому я хотел, чтобы это было автономным. У меня есть gevent, работающий так:

Если у вас есть виртуальная настройка env, тогда:

workon {my_virtual_env}

Затем загрузите libevent и установите его против virtualenv.

curl -L -O https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz

tar -xzf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure --prefix="$VIRTUAL_ENV"
make && make install

Я предполагаю, что у вас установлен gcc 5+ (я использую brew)

Надеюсь, это поможет.

0 голосов
/ 27 октября 2013

В случае, если вы устанавливаете все из исходников и используете csh, на Mac OS 10.9

  1. загружается последняя стабильная версия http://libevent.org/ libevent-2.0.21-stable

    • . / Configure
    • make
    • sudo make install
  2. virtualenv env

  3. источник env / bin / activ.csh

  4. setenv CFLAGS "-I / usr / local / include -L / usr / local / lib"

  5. pip install gevent

...