Skip to content

[Core] Make extension install pip subprocess ignore PIP_REQUIRE_VIRTUALENV#33359

Draft
Copilot wants to merge 2 commits into
devfrom
copilot/fix-installation-failure-when-pip-require-virtuale
Draft

[Core] Make extension install pip subprocess ignore PIP_REQUIRE_VIRTUALENV#33359
Copilot wants to merge 2 commits into
devfrom
copilot/fix-installation-failure-when-pip-require-virtuale

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented May 12, 2026

Related command

  • az extension add --name azure-devops
  • az extension update --name <extension>

Description
az extension add fails when PIP_REQUIRE_VIRTUALENV=true is exported because that env var is inherited by the pip subprocess and forces pip to require an activated virtualenv. This change isolates extension installation from that host-level pip guardrail.

  • Root cause
    • Extension install/update invokes python -m pip install --target ... and inherited PIP_REQUIRE_VIRTUALENV, causing pip exit code 3.
  • Code changes
    • In src/azure-cli-core/azure/cli/core/extension/operations.py:
      • Build subprocess env via os.environ.copy()
      • Remove PIP_REQUIRE_VIRTUALENV from that env
      • Pass sanitized env to check_output(...) in _run_pip.
    • In src/azure-cli-core/azure/cli/core/extension/tests/latest/test_extension_commands.py:
      • Add unit coverage asserting PIP_REQUIRE_VIRTUALENV is stripped while unrelated env vars are preserved.
env = os.environ.copy()
env.pop('PIP_REQUIRE_VIRTUALENV', None)
check_output(cmd, stderr=STDOUT, universal_newlines=True, env=env)

Testing Guide

az extension remove --name azure-devops
export PIP_REQUIRE_VIRTUALENV=true
az extension add --name azure-devops

Expected: extension installs successfully (no pip virtualenv error).

History Notes
[Core] az extension add: Ignore PIP_REQUIRE_VIRTUALENV in extension-install pip subprocess
[Core] az extension update: Ignore PIP_REQUIRE_VIRTUALENV in extension-install pip subprocess


This checklist is used to make sure that common guidelines for a pull request are followed.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • azcliprod.blob.core.windows.net
    • Triggering command: /usr/bin/python python -m unittest azure.cli.core.extension.tests.latest.test_extension_commands (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@azure-client-tools-bot-prd
Copy link
Copy Markdown

azure-client-tools-bot-prd Bot commented May 12, 2026

️✔️AzureCLI-FullTest
️✔️acr
️✔️latest
️✔️3.12
️✔️3.13
️✔️acs
️✔️latest
️✔️3.12
️✔️3.13
️✔️advisor
️✔️latest
️✔️3.12
️✔️3.13
️✔️ams
️✔️latest
️✔️3.12
️✔️3.13
️✔️apim
️✔️latest
️✔️3.12
️✔️3.13
️✔️appconfig
️✔️latest
️✔️3.12
️✔️3.13
️✔️appservice
️✔️latest
️✔️3.12
️✔️3.13
️✔️aro
️✔️latest
️✔️3.12
️✔️3.13
️✔️backup
️✔️latest
️✔️3.12
️✔️3.13
️✔️batch
️✔️latest
️✔️3.12
️✔️3.13
️✔️batchai
️✔️latest
️✔️3.12
️✔️3.13
️✔️billing
️✔️latest
️✔️3.12
️✔️3.13
️✔️botservice
️✔️latest
️✔️3.12
️✔️3.13
️✔️cdn
️✔️latest
️✔️3.12
️✔️3.13
️✔️cloud
️✔️latest
️✔️3.12
️✔️3.13
️✔️cognitiveservices
️✔️latest
️✔️3.12
️✔️3.13
️✔️compute_recommender
️✔️latest
️✔️3.12
️✔️3.13
️✔️computefleet
️✔️latest
️✔️3.12
️✔️3.13
️✔️config
️✔️latest
️✔️3.12
️✔️3.13
️✔️configure
️✔️latest
️✔️3.12
️✔️3.13
️✔️consumption
️✔️latest
️✔️3.12
️✔️3.13
️✔️container
️✔️latest
️✔️3.12
️✔️3.13
️✔️containerapp
️✔️latest
️✔️3.12
️✔️3.13
️✔️core
️✔️latest
️✔️3.12
️✔️3.13
️✔️cosmosdb
️✔️latest
️✔️3.12
️✔️3.13
️✔️databoxedge
️✔️latest
️✔️3.12
️✔️3.13
️✔️dls
️✔️latest
️✔️3.12
️✔️3.13
️✔️dms
️✔️latest
️✔️3.12
️✔️3.13
️✔️eventgrid
️✔️latest
️✔️3.12
️✔️3.13
️✔️eventhubs
️✔️latest
️✔️3.12
️✔️3.13
️✔️feedback
️✔️latest
️✔️3.12
️✔️3.13
️✔️find
️✔️latest
️✔️3.12
️✔️3.13
️✔️hdinsight
️✔️latest
️✔️3.12
️✔️3.13
️✔️identity
️✔️latest
️✔️3.12
️✔️3.13
️✔️iot
️✔️latest
️✔️3.12
️✔️3.13
️✔️keyvault
️✔️latest
️✔️3.12
️✔️3.13
️✔️lab
️✔️latest
️✔️3.12
️✔️3.13
️✔️managedservices
️✔️latest
️✔️3.12
️✔️3.13
️✔️maps
️✔️latest
️✔️3.12
️✔️3.13
️✔️marketplaceordering
️✔️latest
️✔️3.12
️✔️3.13
️✔️monitor
️✔️latest
️✔️3.12
️✔️3.13
️✔️mysql
️✔️latest
️✔️3.12
️✔️3.13
️✔️netappfiles
️✔️latest
️✔️3.12
️✔️3.13
️✔️network
️✔️latest
️✔️3.12
️✔️3.13
️✔️policyinsights
️✔️latest
️✔️3.12
️✔️3.13
️✔️postgresql
️✔️latest
️✔️3.12
️✔️3.13
️✔️privatedns
️✔️latest
️✔️3.12
️✔️3.13
️✔️profile
️✔️latest
️✔️3.12
️✔️3.13
️✔️rdbms
️✔️latest
️✔️3.12
️✔️3.13
️✔️redis
️✔️latest
️✔️3.12
️✔️3.13
️✔️relay
️✔️latest
️✔️3.12
️✔️3.13
️✔️resource
️✔️latest
️✔️3.12
️✔️3.13
️✔️role
️✔️latest
️✔️3.12
️✔️3.13
️✔️search
️✔️latest
️✔️3.12
️✔️3.13
️✔️security
️✔️latest
️✔️3.12
️✔️3.13
️✔️servicebus
️✔️latest
️✔️3.12
️✔️3.13
️✔️serviceconnector
️✔️latest
️✔️3.12
️✔️3.13
️✔️servicefabric
️✔️latest
️✔️3.12
️✔️3.13
️✔️signalr
️✔️latest
️✔️3.12
️✔️3.13
️✔️sql
️✔️latest
️✔️3.12
️✔️3.13
️✔️sqlvm
️✔️latest
️✔️3.12
️✔️3.13
️✔️storage
️✔️latest
️✔️3.12
️✔️3.13
️✔️synapse
️✔️latest
️✔️3.12
️✔️3.13
️✔️telemetry
️✔️latest
️✔️3.12
️✔️3.13
️✔️util
️✔️latest
️✔️3.12
️✔️3.13
️✔️vm
️✔️latest
️✔️3.12
️✔️3.13

@azure-client-tools-bot-prd
Copy link
Copy Markdown

azure-client-tools-bot-prd Bot commented May 12, 2026

️✔️AzureCLI-BreakingChangeTest
️✔️Non Breaking Changes

Copilot AI changed the title [WIP] Fix extension installation failure when PIP_REQUIRE_VIRTUALENV is true [Core] Make extension install pip subprocess ignore PIP_REQUIRE_VIRTUALENV May 12, 2026
Copilot finished work on behalf of a0x1ab May 12, 2026 05:03
Copilot AI requested a review from a0x1ab May 12, 2026 05:03
@yonzhan
Copy link
Copy Markdown
Collaborator

yonzhan commented May 12, 2026

Core

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Installing extension fails if the env var PIP_REQUIRE_VIRTUALENV=true is set

3 participants