2016-05-12 5 views
1

Ich benutze Mac OS X mit PyCharm und Python 3.5.1 und Blender 2.77.Blender Python `bpy`` __init __.py`, anscheinend importiert von einem nicht vorhandenen Modul `_bpy`

Ich benutze Blender mit Python-Skripten. Ich verstehe, dass ich Python-Skripte, die Blender verwenden (d. H., Die bpy importiert) ausführen, muss ich es von der Befehlszeile mit blender -b -P /path/to/my_python_script.py ausführen (obwohl ich nicht wirklich warum weiß). Das ist alles in Ordnung, und es funktioniert, aber ich wünschte, ich könnte es einfach aus Python heraus ausführen, weil ich diese Skripte mit anderen nicht-Blender Python-Code benutze und ich möchte PyCharm verwenden, um zu debuggen und so ziemlich alles zu machen. Ich verstehe, dass ich nicht einfach das Blender-Python-Skript von PyCharm ausführen kann, aber ich dachte, ich würde es trotzdem versuchen. Ich habe darauf geachtet, dass PyCharm das Modul bpy sehen kann, indem ich die "Projektstruktur" -Einstellungen unter "Einstellungen" so ändere, dass das übergeordnete Verzeichnis, in dem das bpy-Modul gespeichert ist, auf meinem Computer /Applications/blender.app/Contents/Resources/2.77/scripts/modules ist. Wenn ich jedoch versuche, das Skript auszuführen, gibt es ImportError: No module named '_bpy'. Ich folgte der Quelle des Fehlers und der Schuldige war eine Zeile in der __init__.py Datei im bpy Modul (dessen Position auf meiner Maschine ist /Applications/blender.app/Contents/Resources/2.77/scripts/modules/bpy/__init__.py); die Linie ist:

from _bpy import types, props, app, data, context 

So habe ich versucht, für das Modul _bpy auf meinem Rechner zu suchen, und konnte es nicht überall. Es scheint also Dinge aus einem Modul zu importieren, das nicht existiert. Ich weiß jedoch, dass mein Skript funktioniert, weil ich es erfolgreich in Blender ausgeführt habe.

Also meine Frage ist, was Hexerei mit dem mysteriösen _bpy Modul, das weder ich noch PyCharm finden kann, aber dass die Blender App hat kein Problem mit? Ich suche nach einem allgemeinen Verständnis von dem, was hier vor sich geht, so sind wohlgebildete Vermutungen (und natürlich auch klare Antworten) willkommen.

+0

Was ist die Ausgabe, wenn Sie 'import _bpy eingeben; _bpy .__ Datei__' – ppperry

+0

ImportError: Kein Modul mit dem Namen '_bpy' – Ray

+1

Ich nehme dann an, dass das' _bpy' Modul in Blender eingebaut ist und keine Quelldatei hat . – ppperry

Antwort

1

Haben Sie passieren die line beforefrom _bpy import... es sagt # internal blender C module zu bemerken, die das Werbegeschenk sein sollte.

Die Hexerei, die diese Arbeit macht, ist, dass der Mixer binäre _bpy als binäre Python-Modul enthält, macht Mixer dieses Modul zugänglich innerhalb der Python-Interpreter mit Mixer enthalten, tut es dies während der Initialisierung des Python-Interpreter. Die normale Blender-Binärdatei kann nicht in einen Python-Interpreter außerhalb von Blender importiert werden.

Um herauszufinden, wie es geht, können Sie mit der Python-Dokumentation unter python's c-api beginnen. Sie können auch den Quellcode von Blender innerhalb von source/blender/python durchsuchen, wo Sie die c-Dateien finden, die zum Erstellen von Blender-Haupt-c-basierten Modulen wie bpy, bgl, bmesh, mathutils verwendet werden.

Siehe auch this answer, die einen Link zu Informationen über das Bauen von Blender als Python-Modul hat, so dass es (ohne die GUI) in einen externen Python-Interpreter importiert werden kann. Wenn Sie nach pycharm unter blender.stackexchange.com suchen, werden Sie mehrere Antworten über die Verwendung von bpy in pycharm und eclipse finden, einschließlich der Möglichkeiten, blender als externen Interpreter zum Debuggen laufen zu lassen.

+0

Genau die Art von Antwort, die ich suchte. Empfehlungen zur weiteren Lektüre sind ein großes Plus. Vielen Dank! – Ray