62 votos

¿Cómo puedo instalar la biblioteca de Python 'gevent' en Mac OS X Lion

Biblioteca de Python gevent, la versión 0.13.6 (la versión actual en PyPI) no pip install en OS X Lion, Python 2.7 (y probablemente otros). Funciona bien en Snow Leopard.

¿Cómo puedo obtener esta biblioteca instalada?

Puntos de bonificación si se puede hacer utilizando pip install, en lugar de un manual o a la medida, porque entonces va a jugar muy bien con compilaciones automatizadas.

Aquí está mi pip install de salida:

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

113voto

Dietrich Epp Puntos 72865

No publique toda la cosa! Eso es demasiado!!! el 90% de las veces, el primer error es suficiente...

gevent/libevent.h:9:19: error: error de evento.h: No existe el fichero o el directorio

Esto significa que la librería que proporciona la event.h de encabezado no está instalado. La biblioteca se llama libevent (sitio web).

En general, los errores de compilación como estos son los que una falla en la construcción de guiones. El script de compilación debe dar un mensaje de error que libevent no está instalado, y es un error que no lo hizo.

Para obtener libevent de MacPorts y, a continuación, indicar manualmente compilador CFLAGS variable de entorno donde encontrar event.h y libevent mientras que la ejecución del pip.

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

También puede utilizar homebrew para la instalación de libevent : brew install libevent
(de David Wolever comentario)

13voto

Ramiro Berrelleza Puntos 1017

Después de un tiempo, me di cuenta de que las rutas de acceso para la variable CFLAGS se mencionó anteriormente funciona cuando la instalación de libevent desde el puerto, pero no de bebida. Los siguientes trabajó para mí (en 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

5voto

user2418730 Puntos 49

Esta es la manera que he encontrado la forma más fácil:

instalar libevent el uso de homebrew

$ brew install libevent

instalar gevent

$ pip install gevent

Esta fue la única forma en que podía llegar a trabajar.

4voto

Stephen Puntos 31

Encontrado esta respuesta cuando se busca ayudar a la instalación de Snow Leopard, la publicación de la presente en caso de que alguien más trata de esta manera con el mismo problema.

Yo había libevent instalado a través de macports.

exportación CFLAGS=-I/opt/local/include export LDFLAGS=-L/opt/local/lib sudo pip instalar gevent

2voto

Yo había libevent instalado a través de cerveza y falló demasiado, lo que funcionó fue similar a lo que Stephen hecho, sino que apunta a colar en la instalación por defecto:

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

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: