summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2012-05-26 19:36:12 (GMT)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2012-05-26 19:36:12 (GMT)
commit42211426eb9771424b9e5153d12f8c2c0c538d34 (patch)
tree3b4e48b2a151ddf75d0c350e4acb6e26e4dcbab6
parent072b1e1485e50b3698c9147ef6dd5b657c100978 (diff)
downloadcpython-42211426eb9771424b9e5153d12f8c2c0c538d34.zip
cpython-42211426eb9771424b9e5153d12f8c2c0c538d34.tar.gz
cpython-42211426eb9771424b9e5153d12f8c2c0c538d34.tar.bz2
Addressed some buildbot errors and comments on the checkin by Antoine on python-dev.
-rw-r--r--Lib/distutils/sysconfig.py3
-rw-r--r--Lib/sysconfig.py3
-rw-r--r--Lib/test/test_venv.py27
-rw-r--r--Lib/venv/__init__.py76
4 files changed, 51 insertions, 58 deletions
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
index 977962f..59315f7 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -47,7 +47,8 @@ def _is_python_source_dir(d):
return True
return False
_sys_home = getattr(sys, '_home', None)
-if _sys_home and os.name == 'nt' and _sys_home.lower().endswith('pcbuild'):
+if _sys_home and os.name == 'nt' and \
+ _sys_home.lower().endswith(('pcbuild', 'pcbuild\\amd64')):
_sys_home = os.path.dirname(_sys_home)
def _python_build():
if _sys_home:
diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
index 6ed9fd8..7350efb 100644
--- a/Lib/sysconfig.py
+++ b/Lib/sysconfig.py
@@ -104,7 +104,8 @@ def _is_python_source_dir(d):
return False
_sys_home = getattr(sys, '_home', None)
-if _sys_home and os.name == 'nt' and _sys_home.lower().endswith('pcbuild'):
+if _sys_home and os.name == 'nt' and \
+ _sys_home.lower().endswith(('pcbuild', 'pcbuild\\amd64')):
_sys_home = os.path.dirname(_sys_home)
def is_python_build(check_home=False):
diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py
index fae62ed..8e41a47 100644
--- a/Lib/test/test_venv.py
+++ b/Lib/test/test_venv.py
@@ -1,24 +1,7 @@
-#!/usr/bin/env python
-#
-# Copyright 2011 by Vinay Sajip. All Rights Reserved.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted,
-# provided that the above copyright notice appear in all copies and that
-# both that copyright notice and this permission notice appear in
-# supporting documentation, and that the name of Vinay Sajip
-# not be used in advertising or publicity pertaining to distribution
-# of the software without specific, written prior permission.
-# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
-# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
-# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-"""Test harness for the venv module. Run all tests.
-
-Copyright (C) 2011 Vinay Sajip. All Rights Reserved.
+"""
+Test harness for the venv module.
+
+Copyright (C) 2011-2012 Vinay Sajip.
"""
import os
@@ -93,7 +76,7 @@ class BasicTest(BaseTest):
data = self.get_text_file_contents(self.bindir, self.ps3name)
self.assertTrue(data.startswith('#!%s%s' % (self.env_dir, os.sep)))
fn = self.get_env_file(self.bindir, self.exe)
- self.assertTrue(os.path.exists(fn))
+ self.assertTrue(os.path.exists(fn), 'File %r exists' % fn)
def test_overwrite_existing(self):
"""
diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py
index 8c26fb1..0c219ab 100644
--- a/Lib/venv/__init__.py
+++ b/Lib/venv/__init__.py
@@ -1,30 +1,34 @@
-# Copyright (C) 2011-2012 Vinay Sajip.
-#
-# Use with a Python executable built from the Python fork at
-#
-# https://bitbucket.org/vinay.sajip/pythonv/ as follows:
-#
-# python -m venv env_dir
-#
-# You'll need an Internet connection (needed to download distribute_setup.py).
-#
-# The script will change to the environment's binary directory and run
-#
-# ./python distribute_setup.py
-#
-# after which you can change to the environment's directory and do some
-# installations, e.g.
-#
-# source bin/activate.sh
-# pysetup3 install setuptools-git
-# pysetup3 install Pygments
-# pysetup3 install Jinja2
-# pysetup3 install SQLAlchemy
-# pysetup3 install coverage
-#
-# Note that on Windows, distributions which include C extensions (e.g. coverage)
-# may fail due to lack of a suitable C compiler.
-#
+"""
+Virtual environment (venv) package for Python. Based on PEP 405.
+
+Copyright (C) 20011-2012 Vinay Sajip. All Rights Reserved.
+
+usage: python -m venv [-h] [--no-distribute] [--system-site-packages]
+ [--symlinks] [--clear] [--upgrade]
+ ENV_DIR [ENV_DIR ...]
+
+Creates virtual Python environments in one or more target directories.
+
+positional arguments:
+ ENV_DIR A directory to create the environment in.
+
+optional arguments:
+ -h, --help show this help message and exit
+ --no-distribute Don't install Distribute in the virtual environment.*
+ --system-site-packages
+ Give the virtual environment access to the system
+ site-packages dir.
+ --symlinks Attempt to symlink rather than copy.
+ --clear Delete the environment directory if it already exists.
+ If not specified and the directory exists, an error is
+ raised.
+ --upgrade Upgrade the environment directory to use this version
+ of Python, assuming Python has been upgraded in-place.
+
+*Note: Distribute support will be available during the alpha phase to
+facilitate testing third-party packages with venvs created using this package.
+This support will be removed after the alpha phase.
+"""
import base64
import io
import logging
@@ -32,13 +36,17 @@ import os
import os.path
import shutil
import sys
+try:
+ import threading
+except ImportError:
+ threading = None
import zipfile
logger = logging.getLogger(__name__)
class Context:
"""
- Holds information about a current virtualisation request.
+ Holds information about a current venv creation/upgrade request.
"""
pass
@@ -353,7 +361,8 @@ class DistributeEnvBuilder(EnvBuilder):
being processed.
"""
if not self.nodist:
- self.install_distribute(context)
+ if threading:
+ self.install_distribute(context)
def reader(self, stream, context):
"""
@@ -381,7 +390,6 @@ class DistributeEnvBuilder(EnvBuilder):
being processed.
"""
from subprocess import Popen, PIPE
- from threading import Thread
from urllib.request import urlretrieve
url = 'http://python-distribute.org/distribute_setup.py'
@@ -398,9 +406,9 @@ class DistributeEnvBuilder(EnvBuilder):
# Install Distribute in the env
args = [context.env_exe, 'distribute_setup.py']
p = Popen(args, stdout=PIPE, stderr=PIPE, cwd=binpath)
- t1 = Thread(target=self.reader, args=(p.stdout, 'stdout'))
+ t1 = threading.Thread(target=self.reader, args=(p.stdout, 'stdout'))
t1.start()
- t2 = Thread(target=self.reader, args=(p.stderr, 'stderr'))
+ t2 = threading.Thread(target=self.reader, args=(p.stderr, 'stderr'))
t2.start()
p.wait()
t1.join()
@@ -478,8 +486,8 @@ def main(args=None):
parser.add_argument('--upgrade', default=False, action='store_true',
dest='upgrade', help='Upgrade the environment '
'directory to use this version '
- 'of Python, assuming it has been '
- 'upgraded in-place.')
+ 'of Python, assuming Python '
+ 'has been upgraded in-place.')
options = parser.parse_args(args)
if options.upgrade and options.clear:
raise ValueError('you cannot supply --upgrade and --clear together.')