Ich möchte zwei (oder mehr) Threads erstellen und in jedem von ihnen ein anderes externes Programm, sagen wir aaa
und bbb
. Diese externen Programme benötigen Bibliotheken, die sich in verschiedenen Verzeichnissen befinden, sagen wir in /aaalib
und /bbblib
, also muss ich die Umgebungsvariable LD_LIBRARY_PATH
setzen, bevor ich sie ausführe. Ich möchte vermeiden, Shell zu verwenden, also Lösungen wie Ausführung LD_LIBRARY_PATH=/aaalib aaa
ist nicht gut.Wie setze ich eine threadspezifische Umgebungsvariable in Python?
Die Frage ist: Wie stelle ich die os.environ['LD_LIBRARY_PATH']
so ein, dass es unterschiedliche Werte in verschiedenen Threads haben wird?
PS. Ich habe versucht, die Lösung os.environ['...'] = threading.local()
here beschrieben, aber es funktioniert nicht in folgender Weise:
In [1]: import os, threading
In [2]: os.environ['LD_LIBRARY_PATH'] = threading.local()
-----------------------
TypeError Traceback (most recent call last)
<ipython-input-2-a2c8ef0b901b> in <module>()
----> 1 os.environ['LD_LIBRARY_PATH'] = threading.local()
/usr/lib/python2.7/os.pyc in __setitem__(self, key, item)
471 self.data = environ
472 def __setitem__(self, key, item):
--> 473 putenv(key, item)
474 self.data[key] = item
475 def update(self, dict=None, **kwargs):
TypeError: must be string, not thread._local