repair env modified by pyinstaller
see https://pyinstaller.readthedocs.io/en/stable/runtime-information.html#ld-library-path-libpath-considerations
This commit is contained in:
parent
98e6a066f4
commit
dec248adec
1 changed files with 9 additions and 1 deletions
|
@ -15,12 +15,20 @@ DISABLED = platform.system() == "Windows"
|
||||||
|
|
||||||
class VideoFileAnalyzer:
|
class VideoFileAnalyzer:
|
||||||
|
|
||||||
|
def _replace_or_pop_env(self, variable):
|
||||||
|
if variable + '_ORIG' in self._env_copy:
|
||||||
|
self._env_copy[variable] = self._env_copy[variable + '_ORIG']
|
||||||
|
else:
|
||||||
|
self._env_copy.pop(variable, None)
|
||||||
|
|
||||||
def __init__(self, conf: TranscodeConfig):
|
def __init__(self, conf: TranscodeConfig):
|
||||||
self._conf = conf
|
self._conf = conf
|
||||||
self._available_encoders = ""
|
self._available_encoders = ""
|
||||||
self._ffmpeg_installed = False
|
self._ffmpeg_installed = False
|
||||||
self._which = None
|
self._which = None
|
||||||
self._checked_ffmpeg = False
|
self._checked_ffmpeg = False
|
||||||
|
self._env_copy = dict(os.environ)
|
||||||
|
self._replace_or_pop_env('LD_LIBRARY_PATH')
|
||||||
|
|
||||||
async def _execute(self, command, arguments):
|
async def _execute(self, command, arguments):
|
||||||
if DISABLED:
|
if DISABLED:
|
||||||
|
@ -28,7 +36,7 @@ class VideoFileAnalyzer:
|
||||||
args = shlex.split(arguments)
|
args = shlex.split(arguments)
|
||||||
process = await asyncio.create_subprocess_exec(
|
process = await asyncio.create_subprocess_exec(
|
||||||
os.path.join(self._conf.ffmpeg_folder, command), *args,
|
os.path.join(self._conf.ffmpeg_folder, command), *args,
|
||||||
stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE
|
stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE, env=self._env_copy
|
||||||
)
|
)
|
||||||
stdout, stderr = await process.communicate() # returns when the streams are closed
|
stdout, stderr = await process.communicate() # returns when the streams are closed
|
||||||
return stdout.decode(errors='replace') + stderr.decode(errors='replace'), process.returncode
|
return stdout.decode(errors='replace') + stderr.decode(errors='replace'), process.returncode
|
||||||
|
|
Loading…
Reference in a new issue