64 votes

Comment puis-je installer la bibliothèque Python 'gevent' sur Mac OS X Lion

La bibliothèque Python gevent , version 0.13.6 (la version actuelle sur PyPI) ne fonctionnera pas pip install sur OS X Lion, Python 2.7 (et probablement d’autres.) Cela fonctionne très bien sur Snow Leopard.

Comment puis-je installer cette bibliothèque?

Points bonus si cela peut être fait en utilisant pip install , plutôt que par un processus manuel ou personnalisé, car alors cela fonctionnera bien avec les versions automatisées.

Voici ma sortie 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
 

114voto

Dietrich Epp Points 72865

Ne pas publier la totalité de la chose! C'est beaucoup trop! 90% du temps, la première erreur est assez...

gevent/libevent.h:9:19: erreur: l'événement.h: Aucun fichier ou répertoire

Cela signifie que la bibliothèque de l' event.h - tête n'est pas installé. La bibliothèque est appelée libevent (site web).

En général, les erreurs de compilation comme celles-ci sont d'une faille de sécurité dans les scripts de construction. Le script de construction doit donner un message d'erreur libevent est pas installé, et c'est un bug qu'il ne le fait pas.

Pour obtenir libevent de MacPorts et puis manuellement dire compilateur CFLAGS variable d'environnement où trouver de l' event.h et libevent lors de l'exécution du programme pep.

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

Vous pouvez également utiliser homebrew pour l'installation de libevent : brew install libevent
(de David Wolever du commentaire)

18voto

Ramiro Berrelleza Points 1017

Après un moment, j'ai réalisé que les chemins pour la variable CFLAGS mentionnée ci-dessus fonctionnent lors de l'installation de libevent à partir de port, mais pas à partir de brew. Ce qui suit a fonctionné pour moi (sur 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
 

6voto

user2418730 Points 49

Voici comment j'ai trouvé le plus facile:

installez libevent en utilisant homebrew

 $ brew install libevent
 

installer gevent

 $ pip install gevent
 

C'était la seule façon pour moi de le faire fonctionner.

4voto

Stephen Points 31

Vous avez trouvé cette réponse en cherchant de l'aide pour l'installation sur Snow Leopard, en la publiant au cas où quelqu'un d'autre viendrait par là avec le même problème.

J'avais libevent installé via macports.

export CFLAGS = -I / opt / local / include export LDFLAGS = -L / opt / local / lib sudo pip installer gevent

2voto

J'avais libevent installé via breuvage et cela a échoué aussi, ce qui a fonctionné était semblable à ce que Stephen avait fait, mais en indiquant l’installation par défaut de breuvage:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X