]> granicus.if.org Git - python/commitdiff
Issue #15776: Allow pyvenv to work in existing directory with --clean.
authorAndrew Svetlov <andrew.svetlov@gmail.com>
Fri, 24 Aug 2012 16:00:15 +0000 (19:00 +0300)
committerAndrew Svetlov <andrew.svetlov@gmail.com>
Fri, 24 Aug 2012 16:00:15 +0000 (19:00 +0300)
Patch by Vinay Sajip.

Lib/venv/__init__.py
Misc/NEWS

index 8d2deb738560edfc77fe50b8b99b462e62687bbb..3553fecb896eaefdb81fbe52e3c503394009234a 100644 (file)
@@ -105,7 +105,15 @@ class EnvBuilder:
         if os.path.exists(env_dir) and not (self.clear or self.upgrade):
             raise ValueError('Directory exists: %s' % env_dir)
         if os.path.exists(env_dir) and self.clear:
-            shutil.rmtree(env_dir)
+            # Issue 15776: To support running pyvenv on '.', the venv
+            # directory contents are emptied and recreated, instead of
+            # the venv directory being deleted and recreated.
+            for f in os.listdir(env_dir):
+                f = os.path.join(env_dir, f)
+                if os.path.isdir(f):
+                    shutil.rmtree(f)
+                else:
+                    os.remove(f)
         context = Context()
         context.env_dir = env_dir
         context.env_name = os.path.split(env_dir)[1]
index 227f2acc88fc098fc17b7a0eae5aa14eadefb182..57f022c048f0c3ed832ec6d6eec83e36363aceaa 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -29,6 +29,8 @@ Core and Builtins
 Library
 -------
 
+- Issue #15776: Allow pyvenv to work in existing directory with --clean.
+
 - Issue #15249: BytesGenerator now correctly mangles From lines (when
   requested) even if the body contains undecodable bytes.