# -----------------------------------------------------------------------------
|
# Copyright (c) 2023, PyInstaller Development Team.
|
#
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
# you may not use this file except in compliance with the License.
|
#
|
# The full license is in the file COPYING.txt, distributed with this software.
|
#
|
# SPDX-License-Identifier: Apache-2.0
|
# -----------------------------------------------------------------------------
|
|
import sys
|
import os
|
|
# A boolean indicating whether the frozen application is a macOS .app bundle.
|
is_macos_app_bundle = sys.platform == 'darwin' and sys._MEIPASS.endswith("Contents/Frameworks")
|
|
|
def prepend_path_to_environment_variable(path, variable_name):
|
"""
|
Prepend the given path to the list of paths stored in the given environment variable (separated by `os.pathsep`).
|
If the given path is already specified in the environment variable, no changes are made. If the environment variable
|
is not set or is empty, it is set/overwritten with the given path.
|
"""
|
stored_paths = os.environ.get(variable_name)
|
if stored_paths:
|
# If path is already included, make this a no-op. NOTE: we need to split the string and search in the list of
|
# substrings to find an exact match; searching in the original string might erroneously match a prefix of a
|
# longer (i.e., sub-directory) path when such entry already happens to be in PATH (see #8857).
|
if path in stored_paths.split(os.pathsep):
|
return
|
# Otherwise, prepend the path
|
stored_paths = path + os.pathsep + stored_paths
|
else:
|
stored_paths = path
|
os.environ[variable_name] = stored_paths
|