From 2cfdd7ab5bf55315b7220b01d6991233df5f392b Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 2 Sep 2024 07:24:29 -0700 Subject: [PATCH] adopt pip's get_best_invocation_for_this_python --- aider/utils.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/aider/utils.py b/aider/utils.py index 11152e569..0cd237971 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -2,6 +2,7 @@ import itertools import os import platform import shlex +import shutil import subprocess import sys import tempfile @@ -193,9 +194,25 @@ def split_chat_history_markdown(text, include_tool=False): return messages +# Copied from pip, MIT license +# https://github.com/pypa/pip/blob/b989e6ef04810bbd4033a3683020bd4ddcbdb627/src/pip/_internal/utils/entrypoints.py#L73 +def get_best_invocation_for_this_python() -> str: + """Try to figure out the best way to invoke the current Python.""" + exe = sys.executable + exe_name = os.path.basename(exe) + + # Try to use the basename, if it's the first executable. + found_executable = shutil.which(exe_name) + if found_executable and os.path.samefile(found_executable, exe): + return exe_name + + # Use the full executable name, because we couldn't find something simpler. + return exe + + def get_pip_install(args): cmd = [ - sys.executable, + get_best_invocation_for_this_python(), "-m", "pip", "install",