Skip to content

Commit

Permalink
Merge pull request #4406 from python-poetry/fix-system-env-detection
Browse files Browse the repository at this point in the history
Fix system environment detection
  • Loading branch information
sdispater authored Aug 19, 2021
2 parents cd51129 + ce3e1cd commit c967a4a
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions poetry/utils/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -996,7 +996,7 @@ def remove_venv(cls, path: Union[Path, str]) -> None:
shutil.rmtree(str(file_path))

@classmethod
def get_system_env(cls, naive: bool = False) -> "SystemEnv":
def get_system_env(cls, naive: bool = False) -> Union["SystemEnv", "GenericEnv"]:
"""
Retrieve the current Python environment.
Expand All @@ -1009,16 +1009,14 @@ def get_system_env(cls, naive: bool = False) -> "SystemEnv":
want to retrieve Poetry's custom virtual environment
(e.g. plugin installation or self update).
"""
prefix, base_prefix = Path(sys.prefix), cls.get_base_prefix()
if naive is False:
from poetry.locations import data_dir

prefix, base_prefix = Path(sys.prefix), Path(cls.get_base_prefix())
if not naive:
try:
prefix.relative_to(data_dir())
Path(__file__).relative_to(prefix)
except ValueError:
pass
else:
prefix = base_prefix
return GenericEnv(base_prefix)

return SystemEnv(prefix)

Expand Down Expand Up @@ -1586,6 +1584,11 @@ def _updated_path(self) -> str:
return os.pathsep.join([str(self._bin_dir), os.environ.get("PATH", "")])


class GenericEnv(VirtualEnv):
def is_venv(self) -> bool:
return self._path != self._base


class NullEnv(SystemEnv):
def __init__(
self, path: Path = None, base: Optional[Path] = None, execute: bool = False
Expand Down

0 comments on commit c967a4a

Please sign in to comment.