aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbashonly <88596187+bashonly@users.noreply.github.com>2024-10-16 03:53:53 +0000
committerGitHub <noreply@github.com>2024-10-16 03:53:53 +0000
commitfbc66e3ab35743cc847a21223c67d88bb463cd9c (patch)
tree441ae975fa47503512cb1a3889812e321a41f4f6
parent64d84d75ca8c19ec06558cc7c511f5f4f7a822bc (diff)
[utils] `Popen`: Reset PyInstaller environment (#11258)
- Forces spawning independent subprocesses for exes bundled with PyInstaller>=6.10 - Fixes regression introduced in fb8b7f226d251e521a89b23c415e249e5b788e5c - Ref: https://pyinstaller.org/en/v6.10.0/CHANGES.html#incompatible-changes Closes #11259 Authored by: bashonly, Grub4K Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
-rw-r--r--yt_dlp/utils/_utils.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/yt_dlp/utils/_utils.py b/yt_dlp/utils/_utils.py
index dd12466b8..27ebfefbc 100644
--- a/yt_dlp/utils/_utils.py
+++ b/yt_dlp/utils/_utils.py
@@ -824,14 +824,18 @@ class Popen(subprocess.Popen):
_startupinfo = None
@staticmethod
- def _fix_pyinstaller_ld_path(env):
- """Restore LD_LIBRARY_PATH when using PyInstaller
- Ref: https://github.com/pyinstaller/pyinstaller/blob/develop/doc/runtime-information.rst#ld_library_path--libpath-considerations
- https://github.com/yt-dlp/yt-dlp/issues/4573
- """
+ def _fix_pyinstaller_issues(env):
if not hasattr(sys, '_MEIPASS'):
return
+ # Force spawning independent subprocesses for exes bundled with PyInstaller>=6.10
+ # Ref: https://pyinstaller.org/en/v6.10.0/CHANGES.html#incompatible-changes
+ # https://github.com/yt-dlp/yt-dlp/issues/11259
+ env['PYINSTALLER_RESET_ENVIRONMENT'] = '1'
+
+ # Restore LD_LIBRARY_PATH when using PyInstaller
+ # Ref: https://pyinstaller.org/en/v6.10.0/runtime-information.html#ld-library-path-libpath-considerations
+ # https://github.com/yt-dlp/yt-dlp/issues/4573
def _fix(key):
orig = env.get(f'{key}_ORIG')
if orig is None:
@@ -845,7 +849,7 @@ class Popen(subprocess.Popen):
def __init__(self, args, *remaining, env=None, text=False, shell=False, **kwargs):
if env is None:
env = os.environ.copy()
- self._fix_pyinstaller_ld_path(env)
+ self._fix_pyinstaller_issues(env)
self.__text_mode = kwargs.get('encoding') or kwargs.get('errors') or text or kwargs.get('universal_newlines')
if text is True: