Commit ce3e1cdf by Sébastien Eustace

Fix system environment detection

parent cd511298
...@@ -996,7 +996,7 @@ class EnvManager: ...@@ -996,7 +996,7 @@ class EnvManager:
shutil.rmtree(str(file_path)) shutil.rmtree(str(file_path))
@classmethod @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. Retrieve the current Python environment.
...@@ -1009,16 +1009,14 @@ class EnvManager: ...@@ -1009,16 +1009,14 @@ class EnvManager:
want to retrieve Poetry's custom virtual environment want to retrieve Poetry's custom virtual environment
(e.g. plugin installation or self update). (e.g. plugin installation or self update).
""" """
prefix, base_prefix = Path(sys.prefix), cls.get_base_prefix() prefix, base_prefix = Path(sys.prefix), Path(cls.get_base_prefix())
if naive is False: if not naive:
from poetry.locations import data_dir
try: try:
prefix.relative_to(data_dir()) Path(__file__).relative_to(prefix)
except ValueError: except ValueError:
pass pass
else: else:
prefix = base_prefix return GenericEnv(base_prefix)
return SystemEnv(prefix) return SystemEnv(prefix)
...@@ -1586,6 +1584,11 @@ class VirtualEnv(Env): ...@@ -1586,6 +1584,11 @@ class VirtualEnv(Env):
return os.pathsep.join([str(self._bin_dir), os.environ.get("PATH", "")]) 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): class NullEnv(SystemEnv):
def __init__( def __init__(
self, path: Path = None, base: Optional[Path] = None, execute: bool = False self, path: Path = None, base: Optional[Path] = None, execute: bool = False
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment