Problème LD_LIBRARY_PATH et Python et Paiza.io ou paiza.io exécutant mruby et communiquant avec http2

Contexte

Paiza.io peut accéder au réseau et gérer les fichiers.

Cela signifie que libtrusterd peut être exécuté via les ctypes de Python!

difficulté

Comme prévu, des éléments de type wget pourraient être facilement implémentés en Python.

context = ssl.create_default_context()
conn = http.client.HTTPSConnection(host, 443, context=context)
conn.request('GET',path)
res = conn.getresponse()
f = open(libname, "wb")
f.write(res.read())
f.close()

Même https est facile ™

libevent n'est pas sur paiza.io!

Eh bien, ce n'est pas grave si vous apportez ceci ainsi que libtrusterd.so.

Mais ça ne marche pas.

@Phi, célèbre pour tmlib.js, a écrit un article sur Python Je le savais pour la première fois à cette époque, mais grâce à cet article Ajout du chemin d'accès prévu à LD_LIBRARY_PATH.

os.environ["LD_LIBRARY_PATH"] = os.environ.get("LD_LIBRARY_PATH") + ":."

Mais ça ne marche toujours pas. ..

Ensuite, vous devez relancer le processus.

Il semble que dlopen ne regarde les variables d'environnement qu'au démarrage du processus.

Pour aggraver les choses, paiza.io ne produit aucun résultat au moins lorsque le processus est redémarré! Il existe peut-être un moyen de travailler avec des processus enfants, mais manque d'expérience en python Par conséquent, le code que j'ai écrit est NG. Si la sortie standard du processus enfant est absorbée par le processus parent Je sens que je peux y aller.

Souviens-toi de l'homme de dlopen

Vous pouvez ouvrir la bibliothèque partagée autant de fois que vous le souhaitez, mais elle ne se chargera pas après la deuxième fois. J'ai l'impression qu'il y avait une description, ce qui signifie que je me souviens de la bibliothèque ouverte.

Appelez à l'avance la bibliothèque partagée qui serait manquante avec ctypes.CDLL, J'ai couru libtrusterd.

dummy = ctypes.CDLL("./libevent-2.0.so.5")
dummy = ctypes.CDLL("./libevent_core-2.0.so.5")
dummy = ctypes.CDLL("./libevent_openssl-2.0.so.5")

Grand succès

Résumé

--LD_LIBRARY_PATH est déjà en retard à dlopen même s'il est réécrit dans le code

Article associé

Recommended Posts

Problème LD_LIBRARY_PATH et Python et Paiza.io ou paiza.io exécutant mruby et communiquant avec http2
Exécutez mruby avec Python ou Blender
Installez et exécutez Python3.5 + NumPy + SciPy sur Windows 10
Exécutez l'installation de pip sur MacOS Python 3.7 ou version ultérieure
Exécutez Openpose sur Python (Windows)
Python sur Ruby et Ruby en colère sur Python
Exécutez Tensorflow 2.x sur Python 3.7
Exécutez le CGI de Python sur CORESERVER
Exécutez la commande unix sur python
Opérateur de bits Python et somme logique
Python ou et et opérateur trap
Comment installer OpenCV sur Cloud9 et l'exécuter en Python
Communiquez avec FX-5204PS avec Python et PyUSB
Python 3.6 sous Windows ... et vers Xamarin.
Installez et exécutez Dropbox sur Ubuntu 20.04
Lier Modelica et Python sous Windows
Exécutez Python selon la planification sur AWS Lambda
Exécutez l'image Docker de TensorFlow sur Python3
[Python] renvoie A [ou / et] B
Exécutez régulièrement Python sur Heroku Scheduler
Installez Python3 et Django sur Amazon Linux (EC2) et exécutez le serveur Web