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
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)
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.
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
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.
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
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
dans le cas où vous installez tous à partir de sources et d'utiliser csh les travaux suivants sur mac os 10.9
-
télécharger la dernière version stable http://libevent.org / libevent-2.0.21-stable
- ./ configurer
- faire
- sudo make install
-
virtualenv env
-
source env/bin / activate.csh
-
setenv CFLAGS "- I / usr/local / include -L / usr/local/lib "
-
pip install gevent
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.
sudo pip install cython git+git://github.com/gevent/gevent.git#egg=gevent
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é.