uwsgi mit pcre unterstützung neu erstellen


74

Beim Ausführen von uwsgi wird folgende Meldung angezeigt:

!!! no internal routing support, rebuild with pcre support !!!

Ich habe pcre (glaube ich) bereits mit dem folgenden Befehl installiert:

Sudo apt-get install libpcre3 libpcre3-dev

Meine Frage ist: Warum erhalte ich diese Meldung auch nach der Installation des PCRE-Pakets noch und wenn ich uwsgi neu installieren und PCRE aktivieren muss, wie mache ich das?

Ist auch internes Routing wichtig? Ich nehme an, dass dies der Fall ist, sonst hätten die Macher von uwsgi die Nachricht nicht veröffentlicht. Ich renne Ubuntu 12.04 LTS.

Danke für die Hilfe!

Antworten:


102
pip install uwsgi -I

Die uwsgi-Binärdatei wird nicht neu kompiliert, sondern nur das Python-Ei neu installiert. Sie müssen die uwsgi-Binärdatei mit den pcre-Bibliotheken neu erstellen.

sudo apt-get install libpcre3 libpcre3-dev

Ich denke, der einfachste Weg ist, uwsgi zu deinstallieren und dann das Pip-Installationsprogramm erneut auszuführen.

pip uninstall uwsgi
sudo apt-get remove uwsgi

dann

pip install uwsgi

Sie sollten sehen, wie pip das Skript setup.py und eine Reihe von Compilermeldungen ausführt. Die letzte Nachricht sollte Ihnen ungefähr Folgendes zeigen:

################# uWSGI configuration #################

pcre = True
kernel = Linux
malloc = libc
execinfo = False
ifaddrs = True
ssl = True
zlib = True
locking = pthread_mutex
plugin_dir = .
timer = timerfd
yaml = embedded
json = False
filemonitor = inotify
routing = True
debug = False
capabilities = False
xml = libxml2
event = epoll

############## end of uWSGI configuration #############

Beachten Sie, wie pcre = true jetzt ist


3
Ich habe die Prozedur befolgt und bekomme diese Ausgabe nicht vom Compiler. Wissen Sie, wo ich diese Konfiguration unter Ubuntu finden kann? Ich kann es nicht unter / etc
stelios

3
Ich hatte das gleiche Problem, aber unter CentOS. Ich habe installiert gcc*und pcre-develanstelle von libpcre3und libpcre3-devund UWSGI funktioniert jetzt einwandfrei.
Axplusb

Sie können mit pip auch in einer Aktion neu installieren sudo /opt/storwizerest-venv/bin/pip install --force-reinstall -U --no-deps uwsgi. --force-reinstallwird -Udie gleiche Version neu installieren (und verwirrenderweise --force-reinstallnichts ohne -U) und --no-depsverhindert, dass versucht wird, alle Abhängigkeiten zu aktualisieren.
Taywee

Was ist, wenn man eine alpine Distribution verwendet?
EsseTi

1
@EsseTi: Der Typ ist klug genug, um herauszufinden, wie man die Bibliotheken in seiner Distribution findet und installiert:apk install pcre pcre-dev
Alanjds

73

pip install uwsgi -I --no-cache-dir

Es installiert ( -I) neu, wie @leech sagte, ignoriert jedoch den kompilierten Cache ( --no-cache-dir) und kompiliert das Ding mit den neuen Bibliotheken neu.


9
Dies ist die Antwort, die für mich funktioniert hat, nicht die akzeptierte Antwort.
Rick

1
Das hat auch bei mir funktioniert. Dies war eines dieser Probleme, von denen ich dachte, dass es nur ein paar Minuten dauern würde, um es herauszufinden, aber es dauerte Stunden.
Graben

1
Hat für mich gut funktioniert, eine Komplettlösung, wenn Sie fertig sind pip uninstall uwsgi. Vielen Dank!
Daniel Porteous

11
pip uninstall uwsgi

sudo apt-get install libpcre3 libpcre3-dev

pip install uwsgi

Ich habe es mit den obigen Befehlen gelöst.


4

Hast du versucht:

pip install uwsgi -I 

Das -IFlag erzwingt eine Neuinstallation


führte den Befehl aus und uwsgi wurde einwandfrei neu installiert. Aber wenn ich es ausführe, erhalte ich immer noch die gleiche Meldung über die Wiederherstellung mit PCRE-Unterstützung.
Johnmic07

1
@ Johnmic07 libpcre3-dev ist genug und es ist unwahrscheinlich, dass Sie das Routing benötigen
Jwalker

Wenn Sie ein virtualenv-Setup haben (und ich hoffe, dass Sie dies tun), ist Ihr System möglicherweise zwischen dem lokalen uwsgi, dem globalen uwsgi (wenn Sie mit installieren sudo pip) und möglicherweise dem Systempaket (wie apt-get) verwechselt . Ich würde es in einer virtuellen Umgebung erstellen und dann pcre = yesin der Build-Ausgabe suchen und das Programm im binVerzeichnis virtualenv finden
Blutegel

Und wie Jwalker sagte, wenn Sie kein internes Routing verwenden, brauchen Sie dies wirklich nicht.
Blutegel

1
Ich verwende kein internes Routing, daher mache ich mir darüber keine Sorgen. Hoffentlich braucht es auch niemand da draußen;)
johnmic07

4

Nach Abschluss der Antwort von @alanjds können Sie Ihrem bereits installierten uWSGI PCre-Unterstützung hinzufügen.

sudo apt-get install libpcre3 libpcre3-dev
pip install uwsgi -I --no-cache-dir

Sie müssen uWSGI nicht deinstallieren


1

Für diejenigen, die dies beheben möchten amazon linux 2oder irgendwelche Red Hat Family Distributionen

Deinstallieren Sie zunächst das uwsgiPaket

pip uninstall uwsgi

Dann installieren pcreundpcre-devel

yum install pcre pcre-devel

Installieren Sie dann das uwsgiPaket neu

pip install uwsgi

0

Wenn Sie alle oben genannten Versuche unternommen haben, aber immer noch der gleiche Fehler vorliegt, überprüfen Sie bitte Ihre Befehlsparameter, insbesondere den --http-socket /path/to/your.sock. Das heißt, der Pfad = '/ path / to' muss vorhanden sein

thunder lock: disabled (you can enable it with --thunder-lock)
bind(): No such file or directory [core/socket.c line 230]
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.