簡體   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