Führen Sie mruby mit Python oder Blender aus

Einführung

Klone und baue mruby. Da Blender 3.4.2 für Python verwendet, Wenn es nahe daran liegt, funktioniert es mit dem folgenden Code.

Einführung von Anwendungsbeispielen dieses Artikels

C

#include <stdio.h>
#include <assert.h>
#include "mruby.h"
#include "mruby/proc.h"
#include "mruby/compile.h"

// "(1..10).each { |x| p x }"

int spam_hello(char *name)
{
  assert(name != NULL);
  mrb_state* mrb = mrb_open();
  mrb_load_string(mrb, name);
  mrb_close(mrb);

  return printf("hello %s\n", name);
}
gcc -I$HOME/local/src/mruby/include -shared -fPIC sapm.c -o sapm.dylib $HOME/local/src/mruby/build/host/lib/libmruby.a

Python

from ctypes import *

class MrubyPyError(Exception):
    pass

class MrubyPy:
    c_spam_module = CDLL('./sapm.dylib')
    c_spam_hello_func_type = CFUNCTYPE(c_int, c_char_p)
    c_spam_hello_func = cast(c_spam_module.spam_hello, c_spam_hello_func_type)

    @classmethod
    def hello(cls, name):
        if name == None or not isinstance(name, str):
            raise MrubyPyError('invalid argument')
        ret = cls.c_spam_hello_func(create_string_buffer(name.encode('UTF-8')))
        #ret = cls.c_spam_hello_func(create_string_buffer(name))
        print ('c_spam_hello_func returned:', ret)

if __name__ == '__main__':
    #MrubyPy.hello('(1..10).each { |x| p x }')
    f = open("hoge.rb","r",encoding="UTF-8")
    ruby=f.read()
    print(ruby)
    MrubyPy.hello(ruby)

Für OSX-Mixer

/Applications/blender.app/Contents/MacOS/blender --background --python hoge.py

Recommended Posts

Führen Sie mruby mit Python oder Blender aus
Führen Sie Blender mit Python aus
Führen Sie Python mit VBA aus
Führen Sie prepDE.py mit python3 aus
Betreiben Sie Blender mit Python
Führen Sie iperf mit Python aus
Führen Sie Python mit PyCharm aus (Windows)
Führen Sie Python mit CloudFlash aus (arm926ej-s)
Führen Sie Label mit tkinter [Python] aus.
Führen Sie Rotrics DexArm mit der Python-API aus
Führen Sie XGBoost mit Cloud Dataflow (Python) aus.
Führen Sie Aprili von Python auf Orange aus
Führen Sie python3 Django1.9 mit mod_wsgi aus (deploy)
Bis Python auf Apache läuft
Beginnen Sie mit Python mit Blender
LD_LIBRARY_PATH und Python und Paiza.io Problem oder paiza.io, um mruby auszuführen und http2 zu kommunizieren
Blender 2.82 oder höher + Hinweise zur Python-Entwicklungsumgebung
Führen Sie eine Python-Webanwendung mit Docker aus
Versuchen Sie, Python: Lambda zuzuweisen oder zu wechseln
[Blender x Python] Beginnen wir mit Blender Python !!
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Blender 2.9 Python Extrude extrudieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Python> Mit Laufzeitargumenten ausführen> Import argparse verwenden
Führen Sie die Pip-Installation unter MacOS Python 3.7 oder höher aus
Führen Sie die vSphere-API von VMware vSphere 6 mit dem Python-Skript (pyvmomi) aus.
Führen Sie Flask unter CentOS mit Python3.4, Gunicorn + Nginx aus.
Wenig bekannte Python-Sprachspezifikation (kompatibel mit Python 3.4 oder höher)
Memo zum Bearbeiten von Szenen mit Blender Python (W.I.P.)
[Blender x Python] Denken Sie an Code mit Symbolen
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Python> Liste> verlängern () oder + =
Scraping in Python (Vorbereitung)
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
Führen Sie Python aus Excel VBA mit xlwings & Tutorial Supplement aus
Umgang mit Yaml mit Python