2016-07-29 8 views
-3

Ich bin von segmentation fault leiden, während Django ausgeführt wird. (Es ist nur eine einfache Code mit Testserver)Wird Django nur mit Python geschrieben?

Als ich suchen, Django mit Python geschrieben.

Ich möchte sicherstellen, dass, wenn Django mit nur python ohne C libraries oder etwas geschrieben, das Segmentierungsfehler erzeugen kann, so dass ich die Segmentierungsfehler sagen kann wegen Python interpreter selbst ist.

Django wird nur mit python geschrieben?

------- Eidt --------

Einige andere Python-Pakete C-Bibliotheken direkt in den Paketen zum Beispiel lxml, cx_Oracle importieren.

Als Ergebnis, auch wenn ich Python perfekt installieren, kann es Segmentierung Fehler Zugriff auf den dritten Teil wrong C libraries.

Meine Frage ist, dass, wenn ich Python perfekt installieren, nie Django Segmentierungsfehler erzeugen?

Weil Django nur auf Python-Interpreter ausgeführt wird, nicht direkt auf dritte Teil C-Bibliotheken zugreifen.

Ich bin misstrauisch, dass es etwas falsch sein muss, während der Installation von Python nicht django. (Ich versuche, Python in AIX zu installieren) Python

+1

Auch wenn es nur in Python geschrieben wurde, verwenden Sie die C-Implementierung von Python? Die meisten sind. Segmentierungsfehler sind in Python extrem selten, es ist wahrscheinlicher, dass Sie eine externe C-Bibliothek selbst verwenden. Mischen Sie beispielsweise 32-Bit und 64-Bit? – cdarke

+1

Ob es ist oder nicht wird nicht wirklich helfen, Ihr Problem zu lösen, sollten Sie nach dem eigentlichen Problem fragen, das Sie versuchen zu lösen – Sayse

+0

Alles in Python geschrieben ist letztlich auch in C "geschrieben", weil Python selbst in C geschrieben ist Wenn Sie Fragen zu Fehlern haben, erstellen Sie ein [MCVE] (http://stackoverflow.com/help/mcve) oder melden Sie direkt einen Fehlerbericht mit dem django-Projekt. – ray

Antwort

2

Es ist nur einfache Code mit Testserver

Django selbst ist geschrieben komplett in Python (plus eine kleine Menge Javascript und Shell-Skripte).

Ist Django wirklich das einzige Python-Paket installiert? Es ist sehr selten, sogar für einfache Websites.

Viele über pip installierte Pakete sind jedoch kein reines Python (zB mysqlclient-python: 64% Python/36% C-Code). Selbst wenn ein Paket reines Python ist, könnte es ctypes verwenden, um C-Bibliotheken direkt aufzurufen (z. B. das mysql-ctypes-Paket).

Selbst mit einem fehlerfreien Interpreter kann ein Fehler in einer verknüpften C-Bibliothek (z. B. libmysql) oder ein Python-Paket, das/interfaces mit C-Code enthält, einen segfault verursachen.

1

Django ist nur, es hat keinen C-Code. Einige Teile davon haben Abhängigkeiten, um C zu verwenden, z. GeoDjango hat in C geschrieben Abhängigkeiten

import faulthandler 
faulthandler.enable() 

auf Ihre Django-Einstellungsdatei hinzufügen, und hoffentlich druckt es einen Stack-Trace, das Ihnen zeigt, wo der Absturz passiert. Siehe this blog post.

Edit: dies erfordert Sie pip install faulthandler, natürlich, wenn Sie nicht Python verwenden 3.3 oder neuer/

Verwandte Themen