Skip to content

Commit 4f20a7e

Browse files
committed
Set include-system-site-packages for user site
1 parent 4d533cc commit 4f20a7e

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

tests/lib/venv.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import textwrap
66
import venv as _venv
77
from pathlib import Path
8-
from typing import TYPE_CHECKING, Optional, Union
8+
from typing import TYPE_CHECKING, Dict, Optional, Union
99

1010
import virtualenv as _virtualenv
1111

@@ -120,6 +120,21 @@ def _customize_site(self) -> None:
120120
# Make sure bytecode is up-to-date too.
121121
assert compileall.compile_file(str(sitecustomize), quiet=1, force=True)
122122

123+
def _rewrite_pyvenv_cfg(self, replacements: Dict[str, str]) -> None:
124+
pyvenv_cfg = self.location.joinpath("pyvenv.cfg")
125+
lines = pyvenv_cfg.read_text(encoding="utf-8").splitlines()
126+
127+
def maybe_replace_line(line: str) -> str:
128+
key = line.split("=", 1)[0].strip()
129+
try:
130+
value = replacements[key]
131+
except KeyError: # No need to replace.
132+
return line
133+
return f"{key} = {value}"
134+
135+
lines = [maybe_replace_line(line) for line in lines]
136+
pyvenv_cfg.write_text("\n".join(lines), encoding="utf-8")
137+
123138
def clear(self) -> None:
124139
self._create(clear=True)
125140

@@ -144,4 +159,7 @@ def user_site_packages(self) -> bool:
144159
@user_site_packages.setter
145160
def user_site_packages(self, value: bool) -> None:
146161
self._user_site_packages = value
162+
self._rewrite_pyvenv_cfg(
163+
{"include-system-site-packages": str(bool(value)).lower()}
164+
)
147165
self._customize_site()

0 commit comments

Comments
 (0)