diff --git a/docs/changelog/1973.bugfix.rst b/docs/changelog/1973.bugfix.rst new file mode 100644 index 000000000..5e99823de --- /dev/null +++ b/docs/changelog/1973.bugfix.rst @@ -0,0 +1 @@ +Fix cygwin path conversion using cygpath - by :user:`danyeaw`. diff --git a/src/virtualenv/activation/via_template.py b/src/virtualenv/activation/via_template.py index 6839f0590..b37b1cb27 100644 --- a/src/virtualenv/activation/via_template.py +++ b/src/virtualenv/activation/via_template.py @@ -1,7 +1,6 @@ from __future__ import absolute_import, unicode_literals import os -import re import sys import sysconfig from abc import ABCMeta, abstractmethod @@ -9,6 +8,7 @@ from six import add_metaclass from virtualenv.util.six import ensure_text +from virtualenv.util.subprocess import run_cmd from .activator import Activator @@ -36,12 +36,8 @@ def replacements(self, creator, dest_folder): current_platform = sysconfig.get_platform() platforms = ["mingw", "cygwin", "msys"] if any(platform in current_platform for platform in platforms): - pattern = re.compile("^([A-Za-z]):(.*)") - match = pattern.match(str(creator.dest)) - if match: - virtual_env = "/" + match.group(1).lower() + match.group(2) - else: - virtual_env = str(creator.dest) + code, out, err = run_cmd(["cygpath", str(creator.dest)]) + virtual_env = out.decode().strip() else: virtual_env = str(creator.dest) return {