Skip to content

Commit cc91e3f

Browse files
Fix site.getsitepackages() ignoring --system-site-packages on python2 (#2107)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 24f9a7f commit cc91e3f

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

docs/changelog/2106.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix ``site.getsitepackages()`` ignoring ``--system-site-packages`` on python2 - by :user:`freundTech`.

src/virtualenv/create/via_global_ref/builtin/python2/site.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def add_global_site_package():
158158
site.PREFIXES = [sys.base_prefix, sys.base_exec_prefix]
159159
site.main()
160160
finally:
161-
site.PREFIXES = orig_prefixes
161+
site.PREFIXES = orig_prefixes + site.PREFIXES
162162

163163

164164
main()

tests/unit/create/test_creator.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import absolute_import, unicode_literals
22

3+
import ast
34
import difflib
45
import gc
56
import json
@@ -621,3 +622,34 @@ def test_pth_in_site_vs_PYTHONPATH(tmp_path):
621622
env=env,
622623
)
623624
assert out == "ok\n"
625+
626+
627+
def test_getsitepackages_system_site(tmp_path):
628+
import site
629+
630+
old_prefixes = site.PREFIXES
631+
site.PREFIXES = [sys.base_prefix, sys.base_exec_prefix]
632+
system_site_packages = site.getsitepackages()
633+
site.PREFIXES = old_prefixes
634+
635+
# Test without --system-site-packages
636+
session = cli_run([ensure_text(str(tmp_path))])
637+
out = subprocess.check_output(
638+
[str(session.creator.exe), "-c", r"import site; print(site.getsitepackages())"],
639+
universal_newlines=True,
640+
)
641+
site_packages = ast.literal_eval(out)
642+
643+
for system_site_package in system_site_packages:
644+
assert system_site_package not in site_packages
645+
646+
# Test with --system-site-packages
647+
session = cli_run([ensure_text(str(tmp_path)), "--system-site-packages"])
648+
out = subprocess.check_output(
649+
[str(session.creator.exe), "-c", r"import site; print(site.getsitepackages())"],
650+
universal_newlines=True,
651+
)
652+
site_packages = ast.literal_eval(out)
653+
654+
for system_site_package in system_site_packages:
655+
assert system_site_package in site_packages

0 commit comments

Comments
 (0)