Skip to content

Commit

Permalink
Add a --python option
Browse files Browse the repository at this point in the history
  • Loading branch information
pfmoore committed Jul 28, 2022
1 parent b8ccb04 commit 79cd599
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/pip/_internal/cli/cmdoptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,13 @@ class PipOption(Option):
),
)

python: Callable[..., Option] = partial(
Option,
"--python",
dest="python",
help="Run pip with the specified Python interpreter.",
)

verbose: Callable[..., Option] = partial(
Option,
"-v",
Expand Down Expand Up @@ -1029,6 +1036,7 @@ def check_list_path_option(options: Values) -> None:
debug_mode,
isolated_mode,
require_virtualenv,
python,
verbose,
version,
quiet,
Expand Down
15 changes: 15 additions & 0 deletions src/pip/_internal/cli/main_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@
"""

import os
import subprocess
import sys
from typing import List, Tuple

from pip._internal.build_env import _get_runnable_pip
from pip._internal.cli import cmdoptions
from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter
from pip._internal.commands import commands_dict, get_similar_commands
Expand Down Expand Up @@ -57,6 +59,19 @@ def parse_command(args: List[str]) -> Tuple[str, List[str]]:
# args_else: ['install', '--user', 'INITools']
general_options, args_else = parser.parse_args(args)

# --python
if general_options.python:
if "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ:
pip_cmd = [
general_options.python,
_get_runnable_pip(),
]
pip_cmd.extend(args)
# Block recursing indefinitely
os.environ["_PIP_RUNNING_IN_SUBPROCESS"] = "1"
proc = subprocess.run(pip_cmd)
sys.exit(proc.returncode)

# --version
if general_options.version:
sys.stdout.write(parser.version)
Expand Down

0 comments on commit 79cd599

Please sign in to comment.