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

bibliothèque Python gevent , version 0.13.6 (la version actuelle sur PyPI) ne sera pas pip install sur OS X Lion, Python 2.7 (et probablement d'autres.) Cela fonctionne très bien sur le léopard des Neiges.

Comment faire installer cette bibliothèque?

points Bonus si cela peut être fait en utilisant pip install , plutôt qu'un processus manuel ou personnalisé, car alors il jouera bien avec les constructions 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('rn', '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
63
demandé sur Jeremy Banks 2011-10-03 05:33:34

10 réponses

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: error: event.h: No such file or directory

cela signifie que la bibliothèque qui fournit l'en-tête event.h n'est pas installée. La Bibliothèque est appelée libevent ( site web ).

en général, les erreurs de compilation comme celles-ci sont un défaut dans les scripts de compilation. Le script de compilation devrait donner un message d'erreur disant que libevent n'est pas installé, et qu'il est un bug qu'il ne le fait pas.

pour récupérer libevent à partir de MacPorts et ensuite dire manuellement au compilateur avec CFLAGS variable d'environnement où trouver event.h et libevent pendant l'exécution de pip.

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

vous pouvez également utiliser homebrew pour installer libevent: brew install libevent

(d'après le commentaire de David Wolever)

114
répondu Dietrich Epp 2012-12-30 23:38:56
CFLAGS='-std=c99' pip install gevent

Voir in: ne peut pas installer gevent OSX 10.11

sur OS X 10.11, clang utilise c11 par défaut, il suffit de le retourner en c99.

24
répondu Legolas Bloom 2017-05-23 11:58:56

après un certain temps, je me suis rendu compte que les chemins pour la variable CFLAGS mentionnée ci-dessus fonctionne lors de l'installation libevent à partir du 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
16
répondu Ramiro Berrelleza 2013-12-05 20:45:39

C'est comme ça que j'ai trouvé le plus facile:

installent libevent using homebrew

$ brew install libevent

installer gevent

$ pip install gevent

C'était la seule façon que je pouvais le faire fonctionner.

6
répondu sandman 2013-08-09 00:58:01

trouvé cette réponse lors de la recherche d'aide à l'installation sur Snow Leopard, en affichant ce au cas où quelqu'un d'autre vient de cette façon avec le même problème.

j'ai fait installer libevent via macports.

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

4
répondu Stephen 2013-02-23 18:45:22

j'ai fait installer libevent via brew et il a échoué aussi, ce qui a fonctionné était similaire à ce que Stephen a fait, mais pointant sur l'installation par défaut de brew:

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

2
répondu Mauricio Souza Lima 2013-09-19 18:10:19

dans le cas où vous installez tous à partir de sources et d'utiliser csh les travaux suivants sur mac os 10.9

  1. télécharger la dernière version stable http://libevent.org / libevent-2.0.21-stable

    • ./ configurer
    • faire
    • sudo make install
  2. virtualenv env

  3. source env/bin / activate.csh

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

  5. pip install gevent

0
répondu nbari 2013-10-26 22:25:55

j'utilise virtualenv et virtualenv wrapper, et donc, je voulais que cela soit autonome. J'ai fait travailler gevent comme ça:

en supposant que vous avez une configuration env virtuelle, puis:

workon {my_virtual_env}

téléchargez ensuite libevent et installez-le contre le 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

je suppose que vous avez installé gcc 5+ (j'utilise brew)

Espérons que cette aide.

0
répondu silverdagger 2015-09-06 01:58:46
sudo pip install cython git+git://github.com/gevent/gevent.git#egg=gevent
0
répondu user200778 2015-12-11 20:21:22

j'utilise MacOs High Sierra (10.13.3) J'ai d'abord fait : brew install libevent

j'ai mis à jour ma version pip en pip-18.0. ensuite essayé d'installer à nouveau :-

pip install gevent

ça a marché.

0
répondu sandip 2018-09-23 16:30:10