Fehler beim importieren von gtk mit python auf OS X
Habe ich gerade installiert pygtk durch Homebrew(geiles tool) sowie deren Abhängigkeiten (einschließlich gtk+); das Ding ist, wenn ich versuche, import gtk auf der python-interpreter wird ein ImportError, was nicht passiert, wenn der Import pygtk oder andere Modul in den interpreter, ich kann nicht herausfinden, was falsch ist. :S
- Sind Sie sicher, dass Sie installiert
pygtk
in der gleichen Python läuft bist du? - Beachten Sie auch, dass die Brauen-Paket sagt ganz klar (wenn Sie
info
es,install
es, etc.) "Für nicht-Homebrew-Python, müssen Sie ändern Sie Ihre PYTHONPATH wie so: ...". Es sei denn, du bist mit Homebrew Python, hast du das gemacht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach Klärung von OP, der original-Antwort nicht beschreiben, sein problem... obwohl ich denke, es ist verbunden, und es kann anderen Menschen helfen, also werde ich es lassen. Aber zuerst, die für Sie relevanten Teil.
Bevor Sie
import gtk
, müssen Sie rufen Siepygtk.require
, wie gezeigt, in der Erste Schritte Abschnitt der Anleitung. (Für mehr details, siehe die PyGTK FAQ.)Dass sollte dein problem lösen... aber du bist einfach abstürzt mit
Fatal Python error: PyThreadState_Get: no current thread
. Es gibt eine Reihe von Gründen, die Sie bekommen können, aber die meisten wahrscheinlich, dass in diesem Fall ist, dass Sie eine C-Erweiterung (pygtk
/gtk
/was auch immer) gebaut für eine Python version gegen eine andere version von Python. (Dies ist eigentlich in der PyGTK FAQ als gut, aber in diesem Fall ist es ein mehr Allgemeines Problem mit CPython C-extension Module, nicht etwas, das PyGTK-spezifisch.)Wenn du mehrere Python-Versionen 2.7 (und wenn Sie haben 2.7.3, Sie sehr haben definitiv zwei, denn Apple ist 2.7.2), die Sie haben, um herauszufinden, welche Sie haben und welche Sie verwendet, um zu bauen
pygtk
, und stellen Sie sicher, dass Sie es aus das gleiche.Und das bringt uns zurück zu der ursprünglichen Antwort, die ich habe Links unten.
Gibt es zwei Gründe, die Sie haben können, dieses problem.
Zuerst, wenn Sie noch nicht installiert hat, jede zusätzliche Python-Versionen außer diejenigen, die mit OS X haben, können Sie nicht Lesen Sie die Anweisungen, die
brew
druckt überpygtk
wenn Sie es installieren, oder info, etc.:Beispiel:
Homebrew installiert Python-Pakete in /usr/local/lib/pythonX.Y—auch wenn es der Installation von Apple ' s Python-installation. Aber Apple ' s Python-installation nicht suchen-Pakete gibt es standardmäßig. So, Sie müssen tun, was dieser sagt.
Nur die Eingabe dieser Zeile auf dem Terminal wird die Arbeit für den rest der terminal-Sitzung. Wenn Sie möchten, um Sie permanent zu machen... gut, es gibt viele Optionen, je nach genau das, was Sie wollen. Sehen diese Antwort für details.
Dies ist näher erläutert in Edelsteine, Eier und Perl-Module und Homebrew und Python.
(Dies ist einer der mehrere Gründe, warum Homebrew in der Regel empfiehlt die Verwendung
pip
Wann immer möglich, anstatt der Suche nach Pakete, die inbrew
. Aber es gibt ein paar Ausnahmen, und ich konnte leicht glauben, pygtk ist einer von Ihnen.)Zweitens, wenn du Homebrew installiert die Python, die Sie wahrscheinlich nicht haben, Ihren WEG bis rechts, so sind Sie für die Installation von Paketen in der Homebrew-Python-Website-Pakete, aber dann läuft der Apple-Python-installation statt.
Wenn Sie nur die Eingabe
python
und nicht wissen, welches Sie ausführen,which python
Sie sagen sollte. Wenn es/usr/bin/python
es ist von Apple; wenn es/usr/local/bin/python
, dass Homebrew ist.Man kann auch sagen, vom Python-Start-banner, da Mountain Lion kommt mit 2.7.2, während Homebrew installieren 2.7.3. (Auch, wenn ich mich Recht erinnere, Apple verwendet eine Vorabversion clang zu bauen, die Ihre Python -, während alles, was Sie bauen mit Homebrew gebaut werden mit dem, was clang/gcc/llvm-gcc, die nicht zu einem prerelease-build...)
HINWEIS: Nur weil das Wort "Apple" irgendwo im banner bedeutet nicht, dass es Apple ist Python! Wenn Sie bauen eine Homebrew-Python, oder installieren Sie eine python.org Python, es wird mit ziemlicher Sicherheit gebaut werden, mit Apple-GCC, Apple Clang, oder Apple LLVM-GCC. Und es läuft auf einem Apple OS auch. Also, "Apple" oder "apple" erscheint bis zu drei mal in der banner für alle Python, Apple oder nicht.
Die Lösung für dieses ist zum ausführen des Python, die Sie ausführen möchten. Zum Beispiel:
virtualenv
zu erstellen, eine oder mehrere virtuelle Umgebungen auf der Basis von entweder-oder, sowohl-Installationen, und wählen, und wählen Sie mithilfe der venv-tools./usr/local/bin/python
zum ausführen von Homebrew ist Python/usr/bin/python
zu laufen, die von Apple. (Und ändern Sie die shebang-Zeilen in einem Ihrer Skripte, dasselbe zu tun.)PATH
variable, um sicherzustellen, je nachdem, was Sie wollen, zuerst kommt zuerst. Für Homebrew, wollen Sie entweder /usr/local/Cellar/python/2.7.3/bin (nur für Python) oder /usr/local/bin (für alles) vor /usr/bin; für Apple, die andere Weise herum.All dies gilt auch für andere tools. Viele Leute geraten in Schwierigkeiten, indem er, z.B., eine installation ist
pip
oderidle
zunächst in den Pfad, während eine andere installationpython
tut...Wenn Sie installiert haben, eine verschiedenen Python, z.B. durch die Verwendung der Installateure von python.org Sie könnte leicht haben beide der oben genannten Probleme. Zum Beispiel könnten Sie die Installation von Sachen für python.org Python, die aber mit Apple-Python, und oben auf, dass, keiner kann so konfiguriert werden, schauen Sie sich in den Homebrew site-packages-Verzeichnis.
export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
Linie an der .Profil-Datei, so denke ich, ist nicht ein Pfad-problem (weil es sonst nicht import pygtk im interpreter).import gtk
die Liniepygtk.require("2.0")
und dann importieren Sie die gtk -, so die Dolmetscherin trows mir diese Fehlermeldung:Fatal Python error: PyThreadState_Get: no current thread
irgendwelche Ideen?