wake-up-neo.com

Wie kann ich die Python Bibliothek 'gevent' unter Mac OS X Lion installieren?

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

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)

114
Dietrich Epp
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.

24
Legolas Bloom

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
16

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.

6
sandman

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

4
Stephen

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

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

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.

0
sandip

Wenn Sie alles von den Quellen anbringen und csh benutzen, arbeitet das folgende auf Mac OS 10.9

  1. laden Sie den neuesten Stable herunter http://libevent.org/ libevent-2.0.21-stable

    • ./konfigurieren
    • make
    • Sudo machen installieren
  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
nbari

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.

0
silverdagger