web-dev-qa-db-fra.com

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

La bibliothèque Python gevent, la 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 Snow Leopard.

Comment puis-je installer cette bibliothèque?

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

Voici mon pip install sortie:

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
63
Jacob Lyles

Ne postez pas le tout! C'est trop! 90% du temps, la première erreur suffit ...

 gevent/libevent.h: 9: 19: erreur: event.h: Aucun fichier ou répertoire de ce type 

Cela signifie que la bibliothèque qui fournit le event.h l'en-tête n'est pas installé. La bibliothèque s'appelle libevent ( website ).

En général, les erreurs de compilation comme celles-ci sont une faille dans les scripts de construction. Le script de construction devrait donner un message d'erreur indiquant que libevent n'est pas installé, et c'est un bogue qu'il ne l'a pas fait.

Pour obtenir libevent de MacPorts, puis indiquer manuellement au compilateur avec la variable d'environnement CFLAGS où trouver event.h et libevent lors de 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
Dietrich Epp
CFLAGS='-std=c99' pip install gevent

Voir dans: Impossible d'installer gevent OSX 10.11

sous OS X 10.11, clang utilise c11 par défaut, il suffit donc de le revenir à c99.

24
Legolas Bloom

Après un certain temps, j'ai réalisé que les chemins de la variable CFLAGS mentionnés ci-dessus fonctionnent lors de l'installation de libevent à partir du port, mais pas de brew. Les éléments suivants ont 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
Ramiro Berrelleza

C'est ainsi que j'ai trouvé le plus simple:

installer libevent en utilisant homebrew

$ brew install libevent

installer gevent

$ pip install gevent

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

6
sandman

J'ai trouvé cette réponse lorsque vous cherchez de l'aide pour l'installation sur Snow Leopard, en la publiant au cas où quelqu'un d'autre viendrait de cette façon avec le même problème.

J'ai fait installer libevent via macports.

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

4
Stephen

J'avais installé libevent via brew et cela a échoué aussi, ce qui a fonctionné était similaire à ce que Stephen a fait, mais pointant vers l'installation par défaut de brew:

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

2
Mauricio Souza Lima
Sudo pip install cython git+git://github.com/gevent/gevent.git#Egg=gevent
0
user200778

J'utilise MacOs High Sierra (10.13.3) D'abord, j'ai fait: installation de brew libevent

J'ai mis à jour ma version pip vers pip-18.0. puis réessayé d'installer avec ce qui suit: -

pip install gevent

ça a marché.

0
sandip

Dans le cas où vous installez tout à partir de sources et utilisez 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

    • ./configure
    • make
    • Sudo make install
  2. virtualenv env

  3. source env/bin/activate.csh

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

  5. installer pip gevent

0
nbari

J'utilise virtualenv et virtualenv wrapper, et je voulais donc que cela soit autonome. J'ai commencé à travailler comme ça:

En supposant que vous avez une configuration env virtuelle, alors:

workon {my_virtual_env}

Téléchargez ensuite libevent et installez-le sur 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)

J'espère que cela t'aides.

0
silverdagger