fix(python): use ensurepip for reliable pip installation on Windows#207
Merged
Conversation
CalvinAllen
added a commit
to CodingWithCalvin/.github
that referenced
this pull request
Jan 25, 2026
- Add "Verify pip shim works" step to test pip --version via shim - Add "Verify pip module works" step to test python -m pip --version - Update Windows matrix to use Python 3.14.2 (reported in dtvem.cli#201) - Update summary table to include pip verification results This ensures the pip installation fix in dtvem.cli is properly tested, particularly on Windows where pip.exe had issues with embedded paths. Related: CodingWithCalvin/dtvem.cli#201, CodingWithCalvin/dtvem.cli#207
Merged
2 tasks
CalvinAllen
added a commit
to CodingWithCalvin/.github
that referenced
this pull request
Jan 25, 2026
- Add "Verify pip shim works" step to test pip --version via shim - Add "Verify pip module works" step to test python -m pip --version - Update Windows matrix to use Python 3.14.2 (reported in dtvem.cli#201) - Update summary table to include pip verification results This ensures the pip installation fix in dtvem.cli is properly tested, particularly on Windows where pip.exe had issues with embedded paths. Related: CodingWithCalvin/dtvem.cli#201, CodingWithCalvin/dtvem.cli#207
CalvinAllen
added a commit
to CodingWithCalvin/.github
that referenced
this pull request
Jan 25, 2026
…53) - Add "Verify pip shim works" step to test pip --version via shim - Add "Verify pip module works" step to test python -m pip --version - Update Windows matrix to use Python 3.14.2 (reported in dtvem.cli#201) - Update summary table to include pip verification results This ensures the pip installation fix in dtvem.cli is properly tested, particularly on Windows where pip.exe had issues with embedded paths. Related: CodingWithCalvin/dtvem.cli#201, CodingWithCalvin/dtvem.cli#207
- Replace get-pip.py with ensurepip --default-pip --upgrade as primary method - Reorder Install() to configure pip before creating shims - Make ._pth file modification best-effort (for python.org embeddable) - Keep get-pip.py as fallback for edge cases - Add unit tests for enableSitePackages and shim configuration This fixes pip installation failures on Windows where: 1. python.org embeddable packages don't include pip 2. python-build-standalone has pip but pip.exe has broken embedded paths Running ensurepip post-installation creates working pip executables with correct paths regardless of the distribution source. Fixes #201
d548477 to
a8557b1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
get-pip.pywithensurepip --default-pip --upgradeas primary pip installation methodInstall()to configure pip before creating shimsget-pip.pyfor edge casesenableSitePackagesand shim configurationProblem
Windows Python installations from two different sources had pip issues:
pip.exehas broken embedded build pathsUsers installing Python 3.14.2 on Windows saw "Failed to install pip" warnings (issue #201).
Solution
Use
python -m ensurepip --default-pip --upgradewhich:pip.exe,pip3.exe,pipX.Y.exeexecutablesget-pip.pyif ensurepip failsChanges
src/runtimes/python/provider.goinstallPip()using ensurepip as primary methodinstallPipWithGetPip()as fallbackenableSitePackages()now best-effort (ignores missing ._pth files)src/runtimes/python/provider_test.goTestPythonProvider_EnableSitePackages(4 test cases)TestPythonProvider_Shims(verifies pip/pip3 shims configured)Test plan
go test ./runtimes/python/...)go test ./...)golangci-lint run ./...)Fixes #201