繁体   English   中英

使用环境变量在python中调用子进程

[英]Calling a subprocess in python with environmental variables

我正在尝试编写一个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)

谢谢你的帮助。

正如乔丹在评论中指出的那样:

- 在su中使它成为一个重新初始化环境的登录shell。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM