Exécutez mruby avec Python ou Blender

introduction

Clonez et compilez mruby. Puisque Blender utilise 3.4.2 pour python, S'il en est proche, il fonctionnera avec le code suivant.

Présentation des exemples d'application de cet article

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)

Pour mélangeur OSX

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

Recommended Posts

Exécutez mruby avec Python ou Blender
Exécutez Blender avec python
Exécutez Python avec VBA
Exécutez prepDE.py avec python3
Faire fonctionner Blender avec Python
Exécutez iperf avec python
Exécutez python avec PyCharm (Windows)
Exécutez Python avec CloudFlash (arm926ej-s)
Exécuter Label avec tkinter [Python]
Exécutez Rotrics DexArm avec l'API Python
Exécutez XGBoost avec Cloud Dataflow (Python)
Exécutez Aprili depuis Python sur Orange
Exécutez python3 Django1.9 avec mod_wsgi (déployer)
Jusqu'à ce que Python fonctionne sur Apache
Démarrez avec Python avec Blender
Problème LD_LIBRARY_PATH et Python et Paiza.io ou paiza.io exécutant mruby et communiquant avec http2
Blender 2.82 ou version ultérieure + notes sur l'environnement de développement python
Exécutez une application Web Python avec Docker
Essayez d'attribuer ou de changer avec Python: lambda
[Blender x Python] Commençons avec Blender Python !!
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Extrusion Python Extrude de Blender 2.9
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Python> Exécuter avec des arguments d'exécution> Utiliser import argparse
Exécutez l'installation de pip sur MacOS Python 3.7 ou version ultérieure
Exécutez l'API vSphere de VMware vSphere 6 avec le script Python (pyvmomi)
Exécutez Flask sur CentOS avec python3.4, Gunicorn + Nginx.
Spécification du langage Python peu connue (compatible avec Python 3.4 ou version ultérieure)
Mémo pour l'édition de scènes avec Blender python (W.I.P.)
[Blender x Python] Pensez au code avec des symboles
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Python> liste> extend () ou + =
Grattage en Python (préparation)
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
Exécutez Python à partir d'Excel VBA avec xlwings et un supplément de tutoriel
Manipuler yaml avec python