我正在尝试编写一个python脚本,以使用Plex Media Scanner自动扫描plex的一部分。为此,我必须以运行plex(在本例中为“plex”)的用户身份运行扫描程序,并为其提供环境变量“LD_LIBRARY_PATH”。我已经尝试过使用subprocess.call和subprocess.Popen两者没有区别。无论哪种情况,我都没有得到任何输出。
这是我正在使用的代码:

#!/usr/bin/python
import os
import subprocess
import shlex

env = os.environ.copy()
env['LD_LIBRARY_PATH'] = '/usr/lib/plexmediaserver'
s = "/bin/su - plex -c '/usr/lib/plexmediaserver/Plex\ Media\ Scanner -s -c 2'"
task = shlex.split(s)
exitCode = subprocess.call(task, env=env, shell=True)

现在,我已经有一个工作版本,可以执行我想要的工作,但是我不得不求助于使用包装器bash脚本来这样做。您可以看到以下代码:
#!/bin/sh
export LD_LIBRARY_PATH=/usr/lib/plexmediaserver
/usr/lib/plexmediaserver/Plex\ Media\ Scanner $@

和脚本的相关行调用它:
exitCode = subprocess.call("/bin/su - plex -c '/var/lib/deluge/delugeScripts/pms.sh -s -c 2'", shell=True)

谢谢你的帮助。

最佳答案

正如约旦在评论中指出的那样:

关于python - 使用环境变量在python中调用子进程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20964515/

10-12 19:49