Python-Bibliothek gevent
, Version 0.13.6 (die aktuelle Version auf PyPI) wird unter OS X Lion nicht pip install
, Python 2.7 (und wahrscheinlich auch andere.) Es funktioniert gut auf Snow Leopard.
Wie kann ich diese Bibliothek installieren lassen?
Bonuspunkte, wenn dies mit pip install
Und nicht mit manuellen oder benutzerdefinierten Verfahren durchgeführt werden kann, da es dann gut mit automatisierten Builds funktioniert.
Hier ist meine Ausgabe 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
Posten Sie nicht die ganze Sache! Das ist zu viel! In 90% der Fälle reicht der erste Fehler aus ...
gevent/libevent.h: 9: 19: error: event.h: Keine solche Datei oder Verzeichnis
Dies bedeutet, dass die Bibliothek, die den Header event.h
Enthält, nicht installiert ist. Die Bibliothek heißt libevent ( website ).
Im Allgemeinen sind solche Kompilierungsfehler ein Fehler in den Erstellungsskripten. Das Build-Skript sollte eine Fehlermeldung anzeigen, dass libevent nicht installiert ist, und es ist ein Fehler, dass dies nicht der Fall war.
Um von MacPorts befreit zu werden und dem Compiler dann manuell mit der Umgebungsvariablen CFLAGS
mitzuteilen, wo sich event.h
Und libevent
befinden, während pip ausgeführt wird.
Sudo port install libevent
CFLAGS="-I /opt/local/include -L /opt/local/lib" pip install gevent
Sie können auch homebrew verwenden, um libevent zu installieren: brew install libevent
(aus David Wolevers Kommentar)
CFLAGS='-std=c99' pip install gevent
Siehe in: Kann gevent OSX 10.11 nicht installieren
unter OS X 10.11 verwendet clang standardmäßig c11, also kehren Sie einfach zu c99 zurück.
Nach einer Weile wurde mir klar, dass die oben genannten Pfade für die CFLAGS-Variable funktionieren, wenn libevent von port, aber nicht von brew installiert wird. Folgendes funktionierte für mich (unter 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
So fand ich es am einfachsten:
installieren Sie libevent mit Homebrew
$ brew install libevent
installieren Sie gevent
$ pip install gevent
Nur so konnte ich es zum Laufen bringen.
Ich habe diese Antwort gefunden, als ich nach Hilfe bei der Installation auf Snow Leopard gesucht habe, um sie zu veröffentlichen, falls jemand anderes mit dem gleichen Problem auf diese Weise auftritt.
Ich hatte libevent über macports installiert.
export CFLAGS = -I/opt/local/include export LDFLAGS = -L/opt/local/lib Sudo-Pip-Installationsereignis
Ich hatte libevent über brew installiert und es ist auch fehlgeschlagen. Was funktionierte, war ähnlich wie Stephen, zeigte aber auf die Standardinstallation von brew:
CFLAGS = -I/usr/local/include LDFLAGS = -L/usr/local/lib pip install gevent
Sudo pip install cython git+git://github.com/gevent/gevent.git#Egg=gevent
Ich benutze MacOs High Sierra (10.13.3) Zuerst habe ich: brew install libevent
Ich habe meine Pip-Version auf Pip-18.0 aktualisiert. Dann versuchte ich es mit folgendem Befehl erneut: -
pip install gevent
es funktionierte.
Wenn Sie alles von den Quellen anbringen und csh benutzen, arbeitet das folgende auf Mac OS 10.9
laden Sie den neuesten Stable herunter http://libevent.org/ libevent-2.0.21-stable
virtualenv env
source env/bin/activate.csh
setenv CFLAGS "-I/usr/local/include -L/usr/local/lib"
pip install gevent
Ich verwende virtualenv und virtualenv wrapper und wollte, dass dies eigenständig ist. Ich habe gevent arbeiten so:
Angenommen, Sie haben ein virtuelles Env-Setup, dann:
workon {my_virtual_env}
Dann lade libevent herunter und installiere es gegen das 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
Ich gehe davon aus, dass du gcc 5+ installiert hast (ich benutze brew)
Hoffe das hilft.