summaryrefslogtreecommitdiff
diff options
authorBarry Warsaw <barry@ubuntu.com>2011-09-08 15:38:18 -0400
committergit-ubuntu importer <ubuntu-devel-discuss@lists.ubuntu.com>2011-09-08 20:35:12 +0000
commit33fffd4c9708054bb8e14c111cf9b5c1eb5577b5 (patch)
tree6c0964ac628554b87e63c3ba48078f89dd1168a2
parente4a0e5670c2fad1040219a35dcea439fc7d27cf9 (diff)
Imported using git-ubuntu import.
Notes
Notes: * New upstream release. - This version includes the upstream fix for posix_local layouts, used in Debian and Ubuntu. (LP: #839588) - debian/patches/remove_syspath0_on_reinvoke.patch (or its moral equivalent) has been applied upstream and is no longer necessary.
-rw-r--r--PKG-INFO177
-rw-r--r--debian/changelog10
-rw-r--r--debian/patches/add_distribute.patch31
-rw-r--r--debian/patches/look_for_external_files.patch19
-rw-r--r--debian/patches/remove_syspath0_on_reinvoke.patch24
-rw-r--r--debian/patches/series1
-rw-r--r--docs/index.txt126
-rw-r--r--docs/news.txt49
-rw-r--r--setup.py4
-rw-r--r--virtualenv.egg-info/PKG-INFO177
-rw-r--r--virtualenv.egg-info/SOURCES.txt4
-rw-r--r--[-rwxr-xr-x]virtualenv.py388
-rw-r--r--virtualenv_support/distribute-0.6.15.tar.gzbin289103 -> 0 bytes
-rw-r--r--virtualenv_support/distribute-0.6.19.tar.gzbin0 -> 399367 bytes
-rw-r--r--virtualenv_support/pip-1.0.2.tar.gzbin0 -> 105820 bytes
-rw-r--r--virtualenv_support/pip-1.0.tar.gzbin100102 -> 0 bytes
16 files changed, 721 insertions, 289 deletions
diff --git a/PKG-INFO b/PKG-INFO
index 78223b1..601625c 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: virtualenv
-Version: 1.6
+Version: 1.6.4
Summary: Virtual Python Environment builder
Home-page: http://www.virtualenv.org
Author: Jannis Leidel, Carl Meyer and Brian Rosner
@@ -18,14 +18,13 @@ Description:
It was written by Ian Bicking, sponsored by the `Open Planning
Project <http://openplans.org>`_ and is now maintained by a
- `group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`.
+ `group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`_.
It is licensed under an
`MIT-style permissive license <https://github.com/pypa/virtualenv/raw/master/LICENSE.txt>`_.
- You can install it with ``easy_install virtualenv``, or from the `git
- repository <https://github.com/pypa/virtualenv>`_ or from a `tarball
- <https://github.com/pypa/virtualenv/tarball/master#egg=virtualenv-dev>`_
- ``easy_install virtualenv==dev``.
+ You can install it with ``easy_install virtualenv``, or the `latest
+ development version <https://github.com/pypa/virtualenv/tarball/develop#egg=virtualenv-dev>`_
+ with ``easy_install virtualenv==dev``.
What It Does
------------
@@ -36,7 +35,7 @@ Description:
and indirectly permissions. Imagine you have an application that
needs version 1 of LibFoo, but another application requires version
2. How can you use both these applications? If you install
- everything into ``/usr/lib/python2.4/site-packages`` (or whatever your
+ everything into ``/usr/lib/python2.7/site-packages`` (or whatever your
platform's standard location is), it's easy to end up in a situation
where you unintentionally upgrade an application that shouldn't be
upgraded.
@@ -51,7 +50,7 @@ Description:
In all these cases, ``virtualenv`` can help you. It creates an
environment that has its own installation directories, that doesn't
share libraries with other virtualenv environments (and optionally
- doesn't use the globally installed libraries either).
+ doesn't access the globally installed libraries either).
The basic usage is::
@@ -91,8 +90,9 @@ Description:
PyPy Support
~~~~~~~~~~~~
- Beginning with virtualenv version 1.5 there is experimental `PyPy
- <http://pypy.org>`_ support. Currently only PyPy trunk is supported.
+ Beginning with virtualenv version 1.5 `PyPy <http://pypy.org>`_ is
+ supported. To use PyPy 1.4 or 1.4.1, you need a version of virtualenv >= 1.5.
+ To use PyPy 1.5, you need a version of virtualenv >= 1.6.1.
Creating Your Own Bootstrap Scripts
-----------------------------------
@@ -179,13 +179,15 @@ Description:
$ source bin/activate
- This will change your ``$PATH`` to point to the virtualenv ``bin/``
- directory. Unlike workingenv, this is all it
- does; it's a convenience. But if you use the complete path like
- ``/path/to/env/bin/python script.py`` you do not need to activate the
- environment first. You have to use ``source`` because it changes the
- environment in-place. After activating an environment you can use the
- function ``deactivate`` to undo the changes.
+ This will change your ``$PATH`` to point to the virtualenv's ``bin/``
+ directory. (You have to use ``source`` because it changes your shell
+ environment in-place.) This is all it does; it's purely a convenience. If
+ you directly run a script or the python interpreter from the virtualenv's
+ ``bin/`` directory (e.g. ``path/to/env/bin/pip`` or
+ ``/path/to/env/bin/python script.py``) there's no need for activation.
+
+ After activating an environment you can use the function ``deactivate`` to
+ undo the changes to your ``$PATH``.
The ``activate`` script will also modify your shell prompt to indicate
which environment is currently active. You can disable this behavior,
@@ -196,7 +198,7 @@ Description:
On Windows you just do::
- > \path\to\env\bin\activate.bat
+ > \path\to\env\Scripts\activate.bat
And use ``deactivate.bat`` to undo the changes.
@@ -226,13 +228,14 @@ Description:
activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
- This will change ``sys.path`` and even change ``sys.prefix``, but also
- allow you to use an existing interpreter. Items in your environment
- will show up first on ``sys.path``, before global items. However,
- this cannot undo the activation of other environments, or modules that
- have been imported. You shouldn't try to, for instance, activate an
- environment before a web request; you should activate *one*
- environment as early as possible, and not do it again in that process.
+ This will change ``sys.path`` and even change ``sys.prefix``, but also allow
+ you to use an existing interpreter. Items in your environment will show up
+ first on ``sys.path``, before global items. However, global items will
+ always be accessible -- this technique does not support the
+ ``--no-site-packages`` flag. Also, this cannot undo the activation of other
+ environments, or modules that have been imported. You shouldn't try to, for
+ instance, activate an environment before a web request; you should activate
+ *one* environment as early as possible, and not do it again in that process.
Making Environments Relocatable
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -272,6 +275,44 @@ Description:
Currently the ``--no-site-packages`` option will not be honored if you
use this on an environment.
+ The ``--extra-search-dir`` Option
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ When it creates a new environment, virtualenv installs either
+ setuptools or distribute, and pip. In normal operation, the latest
+ releases of these packages are fetched from the `Python Package Index
+ <http://pypi.python.org>`_ (PyPI). In some circumstances, this
+ behavior may not be wanted, for example if you are using virtualenv
+ during a deployment and do not want to depend on Internet access and
+ PyPI availability.
+
+ As an alternative, you can provide your own versions of setuptools,
+ distribute and/or pip on the filesystem, and tell virtualenv to use
+ those distributions instead of downloading them from the Internet. To
+ use this feature, pass one or more ``--extra-search-dir`` options to
+ virtualenv like this::
+
+ $ virtualenv --extra-search-dir=/path/to/distributions ENV
+
+ The ``/path/to/distributions`` path should point to a directory that
+ contains setuptools, distribute and/or pip distributions. Setuptools
+ distributions must be ``.egg`` files; distribute and pip distributions
+ should be `.tar.gz` source distributions.
+
+ Virtualenv will still download these packages if no satisfactory local
+ distributions are found.
+
+ If you are really concerned about virtualenv fetching these packages
+ from the Internet and want to ensure that it never will, you can also
+ provide an option ``--never-download`` like so::
+
+ $ virtualenv --extra-search-dir=/path/to/distributions --never-download ENV
+
+ If this option is provided, virtualenv will never try to download
+ setuptools/distribute or pip. Instead, it will exit with status code 1
+ if it fails to find local distributions for any of these required
+ packages.
+
Compare & Contrast with Alternatives
------------------------------------
@@ -310,6 +351,43 @@ Description:
I *strongly* recommend anyone doing application development or
deployment use one of these tools.
+ Contributing
+ ------------
+
+ Refer to the `contributing to pip`_ documentation - it applies equally to
+ virtualenv.
+
+ Virtualenv's release schedule is tied to pip's -- each time there's a new pip
+ release, there will be a new virtualenv release that bundles the new version of
+ pip.
+
+ .. _contributing to pip: http://www.pip-installer.org/en/latest/how-to-contribute.html
+
+ Running the tests
+ ~~~~~~~~~~~~~~~~~
+
+ Virtualenv's test suite is small and not yet at all comprehensive, but we aim
+ to grow it.
+
+ The easy way to run tests (handles test dependencies automatically)::
+
+ $ python setup.py test
+
+ If you want to run only a selection of the tests, you'll need to run them
+ directly with nose instead. Create a virtualenv, and install required
+ packages::
+
+ $ pip install nose mock
+
+ Run nosetests::
+
+ $ nosetests
+
+ Or select just a single test file to run::
+
+ $ nosetests tests.test_virtualenv
+
+
Other Documentation and Links
-----------------------------
@@ -341,6 +419,55 @@ Description:
Changes & News
--------------
+ Next release (1.7) schedule
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Beta release mid-July 2011, final release early August.
+
+ 1.6.4 (2011-07-21)
+ ~~~~~~~~~~~~~~~~~~
+
+ * Restored ability to run on Python 2.4, too.
+
+ 1.6.3 (2011-07-16)
+ ~~~~~~~~~~~~~~~~~~
+
+ * Restored ability to run on Python < 2.7.
+
+ 1.6.2 (2011-07-16)
+ ~~~~~~~~~~~~~~~~~~
+
+ * Updated embedded distribute release to 0.6.19.
+
+ * Updated embedded pip release to 1.0.2.
+
+ * Fixed #141 - Be smarter about finding pkg_resources when using the
+ non-default Python intepreter (by using the ``-p`` option).
+
+ * Fixed #112 - Fixed path in docs.
+
+ * Fixed #109 - Corrected doctests of a Logger method.
+
+ * Fixed #118 - Fixed creating virtualenvs on platforms that use the
+ "posix_local" install scheme, such as Ubuntu with Python 2.7.
+
+ * Add missing library to Python 3 virtualenvs (``_dummy_thread``).
+
+
+ 1.6.1 (2011-04-30)
+ ~~~~~~~~~~~~~~~~~~
+
+ * Start to use git-flow.
+
+ * Added support for PyPy 1.5
+
+ * Fixed #121 -- added sanity-checking of the -p argument. Thanks Paul Nasrat.
+
+ * Added progress meter for pip installation as well as setuptools. Thanks Ethan
+ Jucovy.
+
+ * Added --never-download and --search-dir options. Thanks Ethan Jucovy.
+
1.6
~~~
diff --git a/debian/changelog b/debian/changelog
index c14e862..42d5b18 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+python-virtualenv (1.6.4-0ubuntu1) oneiric; urgency=low
+
+ * New upstream release.
+ - This version includes the upstream fix for posix_local layouts,
+ used in Debian and Ubuntu. (LP: #839588)
+ - debian/patches/remove_syspath0_on_reinvoke.patch (or its moral
+ equivalent) has been applied upstream and is no longer necessary.
+
+ -- Barry Warsaw <barry@ubuntu.com> Thu, 08 Sep 2011 15:38:18 -0400
+
python-virtualenv (1.6-2ubuntu1) oneiric; urgency=low
* debian/patches/remove_syspath0_on_reinvoke.patch
diff --git a/debian/patches/add_distribute.patch b/debian/patches/add_distribute.patch
index 41259b4..5e091b5 100644
--- a/debian/patches/add_distribute.patch
+++ b/debian/patches/add_distribute.patch
@@ -5,11 +5,9 @@ Description: Add --distribute as an option in virtualenv.py
Origin: vendor, http://patches.ubuntu.com/p/python-virtualenv/python-virtualenv_1.4.5-1ubuntu1.patch
Author: Piotr Ożarowski <piotr@debian.org>, Carl Chenet <chaica@ohmytux.com>
-Index: virtualenv-1.6/virtualenv.py
-===================================================================
---- virtualenv-1.6.orig/virtualenv.py 2011-04-07 00:01:39.000000000 +0200
-+++ virtualenv-1.6/virtualenv.py 2011-04-07 00:08:07.000000000 +0200
-@@ -678,9 +678,16 @@
+--- a/virtualenv.py
++++ b/virtualenv.py
+@@ -726,9 +726,16 @@
parser.add_option(
'--distribute',
dest='use_distribute',
@@ -27,28 +25,29 @@ Index: virtualenv-1.6/virtualenv.py
+ help='Use Setuptools instead of Distribute. Set environ variable '
+ 'VIRTUALENV_USE_SETUPTOOLS to make it the default.')
+ default_search_dirs = file_search_dirs()
parser.add_option(
- '--prompt=',
-@@ -818,7 +825,7 @@
+@@ -884,7 +891,7 @@
def create_environment(home_dir, site_packages=True, clear=False,
- unzip_setuptools=False, use_distribute=False,
+ unzip_setuptools=False, use_distribute=True,
- prompt=None):
+ prompt=None, search_dirs=None, never_download=False):
"""
Creates a new environment in ``home_dir``.
-@@ -837,10 +844,10 @@
+@@ -903,11 +910,11 @@
install_distutils(home_dir)
- if use_distribute or os.environ.get('VIRTUALENV_USE_DISTRIBUTE'):
-- install_distribute(py_executable, unzip=unzip_setuptools)
-- else:
+- install_distribute(py_executable, unzip=unzip_setuptools,
+ if not use_distribute or os.environ.get('VIRTUALENV_USE_SETUPTOOLS'):
- install_setuptools(py_executable, unzip=unzip_setuptools)
-+ else:
-+ install_distribute(py_executable, unzip=unzip_setuptools)
-
- install_pip(py_executable)
++ install_setuptools(py_executable, unzip=unzip_setuptools,
+ search_dirs=search_dirs, never_download=never_download)
+ else:
+- install_setuptools(py_executable, unzip=unzip_setuptools,
++ install_distribute(py_executable, unzip=unzip_setuptools,
+ search_dirs=search_dirs, never_download=never_download)
+ install_pip(py_executable, search_dirs=search_dirs, never_download=never_download)
diff --git a/debian/patches/look_for_external_files.patch b/debian/patches/look_for_external_files.patch
index 3350eb5..c8cb96d 100644
--- a/debian/patches/look_for_external_files.patch
+++ b/debian/patches/look_for_external_files.patch
@@ -1,23 +1,20 @@
# Description: store files in /usr/share/python-virtualenv/
# Author: Carl Chenet <chaica@ohmytux.com>
-Index: python-virtualenv-1.4.9/setup.py
-===================================================================
---- python-virtualenv-1.4.9.orig/setup.py
-+++ python-virtualenv-1.4.9/setup.py
-@@ -63,6 +63,6 @@ setup(name='virtualenv',
+--- a/setup.py
++++ b/setup.py
+@@ -51,7 +51,7 @@
license='MIT',
py_modules=['virtualenv'],
packages=['virtualenv_support'],
- package_data={'virtualenv_support': ['*-py%s.egg' % sys.version[:3], '*.tar.gz']},
+ #package_data={'virtualenv_support': ['*-py%s.egg' % sys.version[:3], '*.tar.gz']},
+ test_suite='nose.collector',
+ tests_require=['nose', 'Mock'],
**kw
- )
-Index: virtualenv-1.4.9/virtualenv.py
-===================================================================
---- virtualenv-1.4.9.orig/virtualenv.py 2010-07-06 01:09:36.000000000 +0200
-+++ virtualenv-1.4.9/virtualenv.py 2010-07-06 02:20:52.000000000 +0200
-@@ -346,7 +346,8 @@
+--- a/virtualenv.py
++++ b/virtualenv.py
+@@ -586,7 +586,8 @@
def file_search_dirs():
here = os.path.dirname(os.path.abspath(__file__))
dirs = ['.', here,
diff --git a/debian/patches/remove_syspath0_on_reinvoke.patch b/debian/patches/remove_syspath0_on_reinvoke.patch
deleted file mode 100644
index 136d8be..0000000
--- a/debian/patches/remove_syspath0_on_reinvoke.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Description: When reinvoked, sys.path[0] will point into /usr/share/pyshared
- on Debian, which will cause the following import to pick up the wrong version
- (i.e. the 2.7 version when -p python3 is used). We don't need sys.path[0], so
- just remove it permanently.
-Author: Barry Warsaw <barry@ubuntu.com>
-Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=625784
-Forwarded: not-needed
---- a/virtualenv.py
-+++ b/virtualenv.py
-@@ -469,6 +469,14 @@
- project_name = 'distribute'
- bootstrap_script = DISTRIBUTE_SETUP_PY
- try:
-+ # When reinvoked, sys.path[0] will point into /usr/share/pyshared
-+ # on Debian, which will cause the following import to pick up the
-+ # wrong version (i.e. the 2.7 version when -p python3 is used).
-+ # We don't need sys.path[0], so just remove it permanently. See
-+ # Debian bug 625785.
-+ if (os.environ.get('VIRTUALENV_INTERPRETER_RUNNING', '') == 'true'
-+ and sys.path[0] == '/usr/share/pyshared'):
-+ del sys.path[0]
- # check if the global Python has distribute installed or plain
- # setuptools
- import pkg_resources
diff --git a/debian/patches/series b/debian/patches/series
index 7994981..b98eb5e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,2 @@
look_for_external_files.patch
add_distribute.patch
-remove_syspath0_on_reinvoke.patch
diff --git a/docs/index.txt b/docs/index.txt
index 72a1af8..4fe4c32 100644
--- a/docs/index.txt
+++ b/docs/index.txt
@@ -23,14 +23,13 @@ of `virtual-python
It was written by Ian Bicking, sponsored by the `Open Planning
Project <http://openplans.org>`_ and is now maintained by a
-`group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`.
+`group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`_.
It is licensed under an
`MIT-style permissive license <https://github.com/pypa/virtualenv/raw/master/LICENSE.txt>`_.
-You can install it with ``easy_install virtualenv``, or from the `git
-repository <https://github.com/pypa/virtualenv>`_ or from a `tarball
-<https://github.com/pypa/virtualenv/tarball/master#egg=virtualenv-dev>`_
-``easy_install virtualenv==dev``.
+You can install it with ``easy_install virtualenv``, or the `latest
+development version <https://github.com/pypa/virtualenv/tarball/develop#egg=virtualenv-dev>`_
+with ``easy_install virtualenv==dev``.
What It Does
------------
@@ -41,7 +40,7 @@ The basic problem being addressed is one of dependencies and versions,
and indirectly permissions. Imagine you have an application that
needs version 1 of LibFoo, but another application requires version
2. How can you use both these applications? If you install
-everything into ``/usr/lib/python2.4/site-packages`` (or whatever your
+everything into ``/usr/lib/python2.7/site-packages`` (or whatever your
platform's standard location is), it's easy to end up in a situation
where you unintentionally upgrade an application that shouldn't be
upgraded.
@@ -56,7 +55,7 @@ Also, what if you can't install packages into the global
In all these cases, ``virtualenv`` can help you. It creates an
environment that has its own installation directories, that doesn't
share libraries with other virtualenv environments (and optionally
-doesn't use the globally installed libraries either).
+doesn't access the globally installed libraries either).
The basic usage is::
@@ -96,8 +95,9 @@ the `win32api <http://sourceforge.net/projects/pywin32/>`_ library installed.
PyPy Support
~~~~~~~~~~~~
-Beginning with virtualenv version 1.5 there is experimental `PyPy
-<http://pypy.org>`_ support. Currently only PyPy trunk is supported.
+Beginning with virtualenv version 1.5 `PyPy <http://pypy.org>`_ is
+supported. To use PyPy 1.4 or 1.4.1, you need a version of virtualenv >= 1.5.
+To use PyPy 1.5, you need a version of virtualenv >= 1.6.1.
Creating Your Own Bootstrap Scripts
-----------------------------------
@@ -184,13 +184,15 @@ On Posix systems you can do::
$ source bin/activate
-This will change your ``$PATH`` to point to the virtualenv ``bin/``
-directory. Unlike workingenv, this is all it
-does; it's a convenience. But if you use the complete path like
-``/path/to/env/bin/python script.py`` you do not need to activate the
-environment first. You have to use ``source`` because it changes the
-environment in-place. After activating an environment you can use the
-function ``deactivate`` to undo the changes.
+This will change your ``$PATH`` to point to the virtualenv's ``bin/``
+directory. (You have to use ``source`` because it changes your shell
+environment in-place.) This is all it does; it's purely a convenience. If
+you directly run a script or the python interpreter from the virtualenv's
+``bin/`` directory (e.g. ``path/to/env/bin/pip`` or
+``/path/to/env/bin/python script.py``) there's no need for activation.
+
+After activating an environment you can use the function ``deactivate`` to
+undo the changes to your ``$PATH``.
The ``activate`` script will also modify your shell prompt to indicate
which environment is currently active. You can disable this behavior,
@@ -201,7 +203,7 @@ value before running the ``activate`` script.
On Windows you just do::
- > \path\to\env\bin\activate.bat
+ > \path\to\env\Scripts\activate.bat
And use ``deactivate.bat`` to undo the changes.
@@ -231,13 +233,14 @@ can setup the environment like::
activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
-This will change ``sys.path`` and even change ``sys.prefix``, but also
-allow you to use an existing interpreter. Items in your environment
-will show up first on ``sys.path``, before global items. However,
-this cannot undo the activation of other environments, or modules that
-have been imported. You shouldn't try to, for instance, activate an
-environment before a web request; you should activate *one*
-environment as early as possible, and not do it again in that process.
+This will change ``sys.path`` and even change ``sys.prefix``, but also allow
+you to use an existing interpreter. Items in your environment will show up
+first on ``sys.path``, before global items. However, global items will
+always be accessible -- this technique does not support the
+``--no-site-packages`` flag. Also, this cannot undo the activation of other
+environments, or modules that have been imported. You shouldn't try to, for
+instance, activate an environment before a web request; you should activate
+*one* environment as early as possible, and not do it again in that process.
Making Environments Relocatable
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -277,6 +280,44 @@ layout).
Currently the ``--no-site-packages`` option will not be honored if you
use this on an environment.
+The ``--extra-search-dir`` Option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+When it creates a new environment, virtualenv installs either
+setuptools or distribute, and pip. In normal operation, the latest
+releases of these packages are fetched from the `Python Package Index
+<http://pypi.python.org>`_ (PyPI). In some circumstances, this
+behavior may not be wanted, for example if you are using virtualenv
+during a deployment and do not want to depend on Internet access and
+PyPI availability.
+
+As an alternative, you can provide your own versions of setuptools,
+distribute and/or pip on the filesystem, and tell virtualenv to use
+those distributions instead of downloading them from the Internet. To
+use this feature, pass one or more ``--extra-search-dir`` options to
+virtualenv like this::
+
+ $ virtualenv --extra-search-dir=/path/to/distributions ENV
+
+The ``/path/to/distributions`` path should point to a directory that
+contains setuptools, distribute and/or pip distributions. Setuptools
+distributions must be ``.egg`` files; distribute and pip distributions
+should be `.tar.gz` source distributions.
+
+Virtualenv will still download these packages if no satisfactory local
+distributions are found.
+
+If you are really concerned about virtualenv fetching these packages
+from the Internet and want to ensure that it never will, you can also
+provide an option ``--never-download`` like so::
+
+ $ virtualenv --extra-search-dir=/path/to/distributions --never-download ENV
+
+If this option is provided, virtualenv will never try to download
+setuptools/distribute or pip. Instead, it will exit with status code 1
+if it fails to find local distributions for any of these required
+packages.
+
Compare & Contrast with Alternatives
------------------------------------
@@ -315,6 +356,43 @@ There are several alternatives that create isolated environments:
I *strongly* recommend anyone doing application development or
deployment use one of these tools.
+Contributing
+------------
+
+Refer to the `contributing to pip`_ documentation - it applies equally to
+virtualenv.
+
+Virtualenv's release schedule is tied to pip's -- each time there's a new pip
+release, there will be a new virtualenv release that bundles the new version of
+pip.
+
+.. _contributing to pip: http://www.pip-installer.org/en/latest/how-to-contribute.html
+
+Running the tests
+~~~~~~~~~~~~~~~~~
+
+Virtualenv's test suite is small and not yet at all comprehensive, but we aim
+to grow it.
+
+The easy way to run tests (handles test dependencies automatically)::
+
+ $ python setup.py test
+
+If you want to run only a selection of the tests, you'll need to run them
+directly with nose instead. Create a virtualenv, and install required
+packages::
+
+ $ pip install nose mock
+
+Run nosetests::
+
+ $ nosetests
+
+Or select just a single test file to run::
+
+ $ nosetests tests.test_virtualenv
+
+
Other Documentation and Links
-----------------------------
diff --git a/docs/news.txt b/docs/news.txt
index 081841c..4e20e0f 100644
--- a/docs/news.txt
+++ b/docs/news.txt
@@ -1,6 +1,55 @@
Changes & News
--------------
+Next release (1.7) schedule
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Beta release mid-July 2011, final release early August.
+
+1.6.4 (2011-07-21)
+~~~~~~~~~~~~~~~~~~
+
+* Restored ability to run on Python 2.4, too.
+
+1.6.3 (2011-07-16)
+~~~~~~~~~~~~~~~~~~
+
+* Restored ability to run on Python < 2.7.
+
+1.6.2 (2011-07-16)
+~~~~~~~~~~~~~~~~~~
+
+* Updated embedded distribute release to 0.6.19.
+
+* Updated embedded pip release to 1.0.2.
+
+* Fixed #141 - Be smarter about finding pkg_resources when using the
+ non-default Python intepreter (by using the ``-p`` option).
+
+* Fixed #112 - Fixed path in docs.
+
+* Fixed #109 - Corrected doctests of a Logger method.
+
+* Fixed #118 - Fixed creating virtualenvs on platforms that use the
+ "posix_local" install scheme, such as Ubuntu with Python 2.7.
+
+* Add missing library to Python 3 virtualenvs (``_dummy_thread``).
+
+
+1.6.1 (2011-04-30)
+~~~~~~~~~~~~~~~~~~
+
+* Start to use git-flow.
+
+* Added support for PyPy 1.5
+
+* Fixed #121 -- added sanity-checking of the -p argument. Thanks Paul Nasrat.
+
+* Added progress meter for pip installation as well as setuptools. Thanks Ethan
+ Jucovy.
+
+* Added --never-download and --search-dir options. Thanks Ethan Jucovy.
+
1.6
~~~
diff --git a/setup.py b/setup.py
index dad8605..ae7c79b 100644
--- a/setup.py
+++ b/setup.py
@@ -26,7 +26,7 @@ f.close()
setup(name='virtualenv',
# If you change the version here, change it in virtualenv.py and
# docs/conf.py as well
- version="1.6",
+ version="1.6.4",
description="Virtual Python Environment builder",
long_description=long_description,
classifiers=[
@@ -52,5 +52,7 @@ setup(name='virtualenv',
py_modules=['virtualenv'],
packages=['virtualenv_support'],
package_data={'virtualenv_support': ['*-py%s.egg' % sys.version[:3], '*.tar.gz']},
+ test_suite='nose.collector',
+ tests_require=['nose', 'Mock'],
**kw
)
diff --git a/virtualenv.egg-info/PKG-INFO b/virtualenv.egg-info/PKG-INFO
index 78223b1..601625c 100644
--- a/virtualenv.egg-info/PKG-INFO
+++ b/virtualenv.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: virtualenv
-Version: 1.6
+Version: 1.6.4
Summary: Virtual Python Environment builder
Home-page: http://www.virtualenv.org
Author: Jannis Leidel, Carl Meyer and Brian Rosner
@@ -18,14 +18,13 @@ Description:
It was written by Ian Bicking, sponsored by the `Open Planning
Project <http://openplans.org>`_ and is now maintained by a
- `group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`.
+ `group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`_.
It is licensed under an
`MIT-style permissive license <https://github.com/pypa/virtualenv/raw/master/LICENSE.txt>`_.
- You can install it with ``easy_install virtualenv``, or from the `git
- repository <https://github.com/pypa/virtualenv>`_ or from a `tarball
- <https://github.com/pypa/virtualenv/tarball/master#egg=virtualenv-dev>`_
- ``easy_install virtualenv==dev``.
+ You can install it with ``easy_install virtualenv``, or the `latest
+ development version <https://github.com/pypa/virtualenv/tarball/develop#egg=virtualenv-dev>`_
+ with ``easy_install virtualenv==dev``.
What It Does
------------
@@ -36,7 +35,7 @@ Description:
and indirectly permissions. Imagine you have an application that
needs version 1 of LibFoo, but another application requires version
2. How can you use both these applications? If you install
- everything into ``/usr/lib/python2.4/site-packages`` (or whatever your
+ everything into ``/usr/lib/python2.7/site-packages`` (or whatever your
platform's standard location is), it's easy to end up in a situation
where you unintentionally upgrade an application that shouldn't be
upgraded.
@@ -51,7 +50,7 @@ Description:
In all these cases, ``virtualenv`` can help you. It creates an
environment that has its own installation directories, that doesn't
share libraries with other virtualenv environments (and optionally
- doesn't use the globally installed libraries either).
+ doesn't access the globally installed libraries either).
The basic usage is::
@@ -91,8 +90,9 @@ Description:
PyPy Support
~~~~~~~~~~~~
- Beginning with virtualenv version 1.5 there is experimental `PyPy
- <http://pypy.org>`_ support. Currently only PyPy trunk is supported.
+ Beginning with virtualenv version 1.5 `PyPy <http://pypy.org>`_ is
+ supported. To use PyPy 1.4 or 1.4.1, you need a version of virtualenv >= 1.5.
+ To use PyPy 1.5, you need a version of virtualenv >= 1.6.1.
Creating Your Own Bootstrap Scripts
-----------------------------------
@@ -179,13 +179,15 @@ Description:
$ source bin/activate
- This will change your ``$PATH`` to point to the virtualenv ``bin/``
- directory. Unlike workingenv, this is all it
- does; it's a convenience. But if you use the complete path like
- ``/path/to/env/bin/python script.py`` you do not need to activate the
- environment first. You have to use ``source`` because it changes the
- environment in-place. After activating an environment you can use the
- function ``deactivate`` to undo the changes.
+ This will change your ``$PATH`` to point to the virtualenv's ``bin/``
+ directory. (You have to use ``source`` because it changes your shell
+ environment in-place.) This is all it does; it's purely a convenience. If
+ you directly run a script or the python interpreter from the virtualenv's
+ ``bin/`` directory (e.g. ``path/to/env/bin/pip`` or
+ ``/path/to/env/bin/python script.py``) there's no need for activation.
+
+ After activating an environment you can use the function ``deactivate`` to
+ undo the changes to your ``$PATH``.
The ``activate`` script will also modify your shell prompt to indicate
which environment is currently active. You can disable this behavior,
@@ -196,7 +198,7 @@ Description:
On Windows you just do::
- > \path\to\env\bin\activate.bat
+ > \path\to\env\Scripts\activate.bat
And use ``deactivate.bat`` to undo the changes.
@@ -226,13 +228,14 @@ Description:
activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
- This will change ``sys.path`` and even change ``sys.prefix``, but also
- allow you to use an existing interpreter. Items in your environment
- will show up first on ``sys.path``, before global items. However,
- this cannot undo the activation of other environments, or modules that
- have been imported. You shouldn't try to, for instance, activate an
- environment before a web request; you should activate *one*
- environment as early as possible, and not do it again in that process.
+ This will change ``sys.path`` and even change ``sys.prefix``, but also allow
+ you to use an existing interpreter. Items in your environment will show up
+ first on ``sys.path``, before global items. However, global items will
+ always be accessible -- this technique does not support the
+ ``--no-site-packages`` flag. Also, this cannot undo the activation of other
+ environments, or modules that have been imported. You shouldn't try to, for
+ instance, activate an environment before a web request; you should activate
+ *one* environment as early as possible, and not do it again in that process.
Making Environments Relocatable
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -272,6 +275,44 @@ Description:
Currently the ``--no-site-packages`` option will not be honored if you
use this on an environment.
+ The ``--extra-search-dir`` Option
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ When it creates a new environment, virtualenv installs either
+ setuptools or distribute, and pip. In normal operation, the latest
+ releases of these packages are fetched from the `Python Package Index
+ <http://pypi.python.org>`_ (PyPI). In some circumstances, this
+ behavior may not be wanted, for example if you are using virtualenv
+ during a deployment and do not want to depend on Internet access and
+ PyPI availability.
+
+ As an alternative, you can provide your own versions of setuptools,
+ distribute and/or pip on the filesystem, and tell virtualenv to use
+ those distributions instead of downloading them from the Internet. To
+ use this feature, pass one or more ``--extra-search-dir`` options to
+ virtualenv like this::
+
+ $ virtualenv --extra-search-dir=/path/to/distributions ENV
+
+ The ``/path/to/distributions`` path should point to a directory that
+ contains setuptools, distribute and/or pip distributions. Setuptools
+ distributions must be ``.egg`` files; distribute and pip distributions
+ should be `.tar.gz` source distributions.
+
+ Virtualenv will still download these packages if no satisfactory local
+ distributions are found.
+
+ If you are really concerned about virtualenv fetching these packages
+ from the Internet and want to ensure that it never will, you can also
+ provide an option ``--never-download`` like so::
+
+ $ virtualenv --extra-search-dir=/path/to/distributions --never-download ENV
+
+ If this option is provided, virtualenv will never try to download
+ setuptools/distribute or pip. Instead, it will exit with status code 1
+ if it fails to find local distributions for any of these required
+ packages.
+
Compare & Contrast with Alternatives
------------------------------------
@@ -310,6 +351,43 @@ Description:
I *strongly* recommend anyone doing application development or
deployment use one of these tools.
+ Contributing
+ ------------
+
+ Refer to the `contributing to pip`_ documentation - it applies equally to
+ virtualenv.
+
+ Virtualenv's release schedule is tied to pip's -- each time there's a new pip
+ release, there will be a new virtualenv release that bundles the new version of
+ pip.
+
+ .. _contributing to pip: http://www.pip-installer.org/en/latest/how-to-contribute.html
+
+ Running the tests
+ ~~~~~~~~~~~~~~~~~
+
+ Virtualenv's test suite is small and not yet at all comprehensive, but we aim
+ to grow it.
+
+ The easy way to run tests (handles test dependencies automatically)::
+
+ $ python setup.py test
+
+ If you want to run only a selection of the tests, you'll need to run them
+ directly with nose instead. Create a virtualenv, and install required
+ packages::
+
+ $ pip install nose mock
+
+ Run nosetests::
+
+ $ nosetests
+
+ Or select just a single test file to run::
+
+ $ nosetests tests.test_virtualenv
+
+
Other Documentation and Links
-----------------------------
@@ -341,6 +419,55 @@ Description:
Changes & News
--------------
+ Next release (1.7) schedule
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Beta release mid-July 2011, final release early August.
+
+ 1.6.4 (2011-07-21)
+ ~~~~~~~~~~~~~~~~~~
+
+ * Restored ability to run on Python 2.4, too.
+
+ 1.6.3 (2011-07-16)
+ ~~~~~~~~~~~~~~~~~~
+
+ * Restored ability to run on Python < 2.7.
+
+ 1.6.2 (2011-07-16)
+ ~~~~~~~~~~~~~~~~~~
+
+ * Updated embedded distribute release to 0.6.19.
+
+ * Updated embedded pip release to 1.0.2.
+
+ * Fixed #141 - Be smarter about finding pkg_resources when using the
+ non-default Python intepreter (by using the ``-p`` option).
+
+ * Fixed #112 - Fixed path in docs.
+
+ * Fixed #109 - Corrected doctests of a Logger method.
+
+ * Fixed #118 - Fixed creating virtualenvs on platforms that use the
+ "posix_local" install scheme, such as Ubuntu with Python 2.7.
+
+ * Add missing library to Python 3 virtualenvs (``_dummy_thread``).
+
+
+ 1.6.1 (2011-04-30)
+ ~~~~~~~~~~~~~~~~~~
+
+ * Start to use git-flow.
+
+ * Added support for PyPy 1.5
+
+ * Fixed #121 -- added sanity-checking of the -p argument. Thanks Paul Nasrat.
+
+ * Added progress meter for pip installation as well as setuptools. Thanks Ethan
+ Jucovy.
+
+ * Added --never-download and --search-dir options. Thanks Ethan Jucovy.
+
1.6
~~~
diff --git a/virtualenv.egg-info/SOURCES.txt b/virtualenv.egg-info/SOURCES.txt
index 064e102..3a15c55 100644
--- a/virtualenv.egg-info/SOURCES.txt
+++ b/virtualenv.egg-info/SOURCES.txt
@@ -13,8 +13,8 @@ virtualenv.egg-info/entry_points.txt
virtualenv.egg-info/not-zip-safe
virtualenv.egg-info/top_level.txt
virtualenv_support/__init__.py
-virtualenv_support/distribute-0.6.15.tar.gz
-virtualenv_support/pip-1.0.tar.gz
+virtualenv_support/distribute-0.6.19.tar.gz
+virtualenv_support/pip-1.0.2.tar.gz
virtualenv_support/setuptools-0.6c11-py2.4.egg
virtualenv_support/setuptools-0.6c11-py2.5.egg
virtualenv_support/setuptools-0.6c11-py2.6.egg
diff --git a/virtualenv.py b/virtualenv.py
index f49f3a3..c173dd4 100755..100644
--- a/virtualenv.py
+++ b/virtualenv.py
@@ -1,9 +1,10 @@
+#!/usr/bin/env python
"""Create a "virtual" Python installation
"""
# If you change the version here, change it in setup.py
# and docs/conf.py as well.
-virtualenv_version = "1.6"
+virtualenv_version = "1.6.4"
import base64
import sys
@@ -40,6 +41,7 @@ py_version = 'python%s.%s' % (sys.version_info[0], sys.version_info[1])
is_jython = sys.platform.startswith('java')
is_pypy = hasattr(sys, 'pypy_version_info')
+is_win = (sys.platform == 'win32')
abiflags = getattr(sys, 'abiflags', '')
if is_pypy:
@@ -115,7 +117,7 @@ elif majver == 3:
#"dis",
#"doctest",
#"dummy_threading",
- #"_dummy_thread",
+ "_dummy_thread",
#"email",
#"filecmp",
#"fileinput",
@@ -337,7 +339,7 @@ class Logger(object):
def level_matches(self, level, consumer_level):
"""
- >>> l = Logger()
+ >>> l = Logger([])
>>> l.level_matches(3, 4)
False
>>> l.level_matches(3, 2)
@@ -355,7 +357,7 @@ class Logger(object):
start, stop = level.start, level.stop
if start is not None and start > consumer_level:
return False
- if stop is not None or stop <= consumer_level:
+ if stop is not None and stop <= consumer_level:
return False
return True
else:
@@ -457,7 +459,12 @@ def _find_file(filename, dirs):
return join(dir, filename)
return filename
-def _install_req(py_executable, unzip=False, distribute=False):
+def _install_req(py_executable, unzip=False, distribute=False,
+ search_dirs=None, never_download=False):
+
+ if search_dirs is None:
+ search_dirs = file_search_dirs()
+
if not distribute:
setup_fn = 'setuptools-0.6c11-py%s.egg' % sys.version[:3]
project_name = 'setuptools'
@@ -465,22 +472,34 @@ def _install_req(py_executable, unzip=False, distribute=False):
source = None
else:
setup_fn = None
- source = 'distribute-0.6.15.tar.gz'
+ source = 'distribute-0.6.19.tar.gz'
project_name = 'distribute'
bootstrap_script = DISTRIBUTE_SETUP_PY
- try:
- # check if the global Python has distribute installed or plain
- # setuptools
- import pkg_resources
- if not hasattr(pkg_resources, '_distribute'):
- location = os.path.dirname(pkg_resources.__file__)
- logger.notify("A globally installed setuptools was found (in %s)" % location)
- logger.notify("Use the --no-site-packages option to use distribute in "
- "the virtualenv.")
- except ImportError:
- pass
- search_dirs = file_search_dirs()
+ # If we are running under -p, we need to remove the current
+ # directory from sys.path temporarily here, so that we
+ # definitely get the pkg_resources from the site directory of
+ # the interpreter we are running under, not the one
+ # virtualenv.py is installed under (which might lead to py2/py3
+ # incompatibility issues)
+ _prev_sys_path = sys.path
+ if os.environ.get('VIRTUALENV_INTERPRETER_RUNNING'):
+ sys.path = sys.path[1:]
+
+ try:
+ try:
+ # check if the global Python has distribute installed or plain
+ # setuptools
+ import pkg_resources
+ if not hasattr(pkg_resources, '_distribute'):
+ location = os.path.dirname(pkg_resources.__file__)
+ logger.notify("A globally installed setuptools was found (in %s)" % location)
+ logger.notify("Use the --no-site-packages option to use distribute in "
+ "the virtualenv.")
+ except ImportError:
+ pass
+ finally:
+ sys.path = _prev_sys_path
if setup_fn is not None:
setup_fn = _find_file(setup_fn, search_dirs)
@@ -515,12 +534,23 @@ def _install_req(py_executable, unzip=False, distribute=False):
else:
# the source is found, let's chdir
if source is not None and os.path.exists(source):
+ logger.info('Using existing %s egg: %s' % (project_name, source))
os.chdir(os.path.dirname(source))
# in this case, we want to be sure that PYTHONPATH is unset (not
# just empty, really unset), else CPython tries to import the
# site.py that it's in virtualenv_support
remove_from_env.append('PYTHONPATH')
else:
+ if never_download:
+ logger.fatal("Can't find any local distributions of %s to install "
+ "and --never-download is set. Either re-run virtualenv "
+ "without the --never-download option, or place a %s "
+ "distribution (%s) in one of these "
+ "locations: %r" % (project_name, project_name,
+ setup_fn or source,
+ search_dirs))
+ sys.exit(1)
+
logger.info('No %s egg found; downloading' % project_name)
cmd.extend(['--always-copy', '-U', project_name])
logger.start_progress('Installing %s...' % project_name)
@@ -567,16 +597,23 @@ def file_search_dirs():
dirs.append(os.path.join(os.path.dirname(virtualenv.__file__), 'virtualenv_support'))
return [d for d in dirs if os.path.isdir(d)]
-def install_setuptools(py_executable, unzip=False):
- _install_req(py_executable, unzip)
+def install_setuptools(py_executable, unzip=False,
+ search_dirs=None, never_download=False):
+ _install_req(py_executable, unzip,
+ search_dirs=search_dirs, never_download=never_download)
-def install_distribute(py_executable, unzip=False):
- _install_req(py_executable, unzip, distribute=True)
+def install_distribute(py_executable, unzip=False,
+ search_dirs=None, never_download=False):
+ _install_req(py_executable, unzip, distribute=True,
+ search_dirs=search_dirs, never_download=never_download)
_pip_re = re.compile(r'^pip-.*(zip|tar.gz|tar.bz2|tgz|tbz)$', re.I)
-def install_pip(py_executable):
+def install_pip(py_executable, search_dirs=None, never_download=False):
+ if search_dirs is None:
+ search_dirs = file_search_dirs()
+
filenames = []
- for dir in file_search_dirs():
+ for dir in search_dirs:
filenames.extend([join(dir, fn) for fn in os.listdir(dir)
if _pip_re.search(fn)])
filenames = [(os.path.basename(filename).lower(), i, filename) for i, filename in enumerate(filenames)]
@@ -591,9 +628,18 @@ def install_pip(py_executable):
easy_install_script = 'easy_install-script.py'
cmd = [py_executable, join(os.path.dirname(py_executable), easy_install_script), filename]
if filename == 'pip':
+ if never_download:
+ logger.fatal("Can't find any local distributions of pip to install "
+ "and --never-download is set. Either re-run virtualenv "
+ "without the --never-download option, or place a pip "
+ "source distribution (zip/tar.gz/tar.bz2) in one of these "
+ "locations: %r" % search_dirs)
+ sys.exit(1)
logger.info('Installing pip from network...')
else:
- logger.info('Installing %s' % os.path.basename(filename))
+ logger.info('Installing existing %s distribution: %s' % (
+ os.path.basename(filename), filename))
+ logger.start_progress('Installing pip...')
logger.indent += 2
def _filter_setup(line):
return filter_ez_setup(line, 'pip')
@@ -602,6 +648,7 @@ def install_pip(py_executable):
filter_stdout=_filter_setup)
finally:
logger.indent -= 2
+ logger.end_progress()
def filter_ez_setup(line, project_name='setuptools'):
if not line.strip():
@@ -682,6 +729,22 @@ def main():
help='Use Distribute instead of Setuptools. Set environ variable '
'VIRTUALENV_USE_DISTRIBUTE to make it the default ')
+ default_search_dirs = file_search_dirs()
+ parser.add_option(
+ '--extra-search-dir',
+ dest="search_dirs",
+ action="append",
+ default=default_search_dirs,
+ help="Directory to look for setuptools/distribute/pip distributions in. "
+ "You can add any number of additional --extra-search-dir paths.")
+
+ parser.add_option(
+ '--never-download',
+ dest="never_download",
+ action="store_true",
+ help="Never download anything from the network. Instead, virtualenv will fail "
+ "if local distributions of setuptools/distribute/pip are not present.")
+
parser.add_option(
'--prompt=',
dest='prompt',
@@ -742,7 +805,9 @@ def main():
create_environment(home_dir, site_packages=not options.no_site_packages, clear=options.clear,
unzip_setuptools=options.unzip_setuptools,
use_distribute=options.use_distribute or majver > 2,
- prompt=options.prompt)
+ prompt=options.prompt,
+ search_dirs=options.search_dirs,
+ never_download=options.never_download)
if 'after_install' in globals():
after_install(options, home_dir)
@@ -819,7 +884,7 @@ def call_subprocess(cmd, show_stdout=True,
def create_environment(home_dir, site_packages=True, clear=False,
unzip_setuptools=False, use_distribute=False,
- prompt=None):
+ prompt=None, search_dirs=None, never_download=False):
"""
Creates a new environment in ``home_dir``.
@@ -838,11 +903,13 @@ def create_environment(home_dir, site_packages=True, clear=False,
install_distutils(home_dir)
if use_distribute or os.environ.get('VIRTUALENV_USE_DISTRIBUTE'):
- install_distribute(py_executable, unzip=unzip_setuptools)
+ install_distribute(py_executable, unzip=unzip_setuptools,
+ search_dirs=search_dirs, never_download=never_download)
else:
- install_setuptools(py_executable, unzip=unzip_setuptools)
+ install_setuptools(py_executable, unzip=unzip_setuptools,
+ search_dirs=search_dirs, never_download=never_download)
- install_pip(py_executable)
+ install_pip(py_executable, search_dirs=search_dirs, never_download=never_download)
install_activate(home_dir, bin_dir, prompt)
@@ -945,6 +1012,7 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear):
prefix = sys.prefix
mkdir(lib_dir)
fix_lib64(lib_dir)
+ fix_local_scheme(home_dir)
stdlib_dirs = [os.path.dirname(os.__file__)]
if sys.platform == 'win32':
stdlib_dirs.append(join(os.path.dirname(stdlib_dirs[0]), 'DLLs'))
@@ -987,7 +1055,7 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear):
logger.info('Deleting %s' % site_packages_filename)
os.unlink(site_packages_filename)
- if is_pypy:
+ if is_pypy or is_win:
stdinc_dir = join(prefix, 'include')
else:
stdinc_dir = join(prefix, 'include', py_version + abiflags)
@@ -1200,6 +1268,21 @@ def install_distutils(home_dir):
writefile(os.path.join(distutils_path, '__init__.py'), DISTUTILS_INIT)
writefile(os.path.join(distutils_path, 'distutils.cfg'), DISTUTILS_CFG, overwrite=False)
+def fix_local_scheme(home_dir):
+ """
+ Platforms that use the "posix_local" install scheme (like Ubuntu with
+ Python 2.7) need to be given an additional "local" location, sigh.
+ """
+ try:
+ import sysconfig
+ except ImportError:
+ pass
+ else:
+ if sysconfig._get_default_scheme() == 'posix_local':
+ local_path = os.path.join(home_dir, 'local')
+ if not os.path.exists(local_path):
+ os.symlink(os.path.abspath(home_dir), local_path)
+
def fix_lib64(lib_dir):
"""
Some platforms (particularly Gentoo on x64) put things in lib64/pythonX.Y
@@ -1228,9 +1311,16 @@ def resolve_interpreter(exe):
break
if not os.path.exists(exe):
logger.fatal('The executable %s (from --python=%s) does not exist' % (exe, exe))
- sys.exit(3)
+ raise SystemExit(3)
+ if not is_executable(exe):
+ logger.fatal('The executable %s (from --python=%s) is not executable' % (exe, exe))
+ raise SystemExit(3)
return exe
+def is_executable(exe):
+ """Checks a file is executable"""
+ return os.access(exe, os.X_OK)
+
############################################################
## Relocating the environment:
@@ -1560,37 +1650,35 @@ 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
-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
-AIOc2an2AKxRCP4P1A2QJQ==
+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
""")
-
-
##file ez_setup.py
EZ_SETUP_PY = convert("""
eJzNWmtv49a1/a5fwSgwJGE0NN8PDzRFmkyBAYrcIo8CFx5XPk+LHYpUSWoctch/v+ucQ1KkZDrt
@@ -1662,93 +1750,89 @@ dX85nKW3umfYbtu8713Sylhb2i3v2qaoc8C7S2P3pME8uIGedi1IxXbL+adi+P2fT8Xy/m+/PrxZ
BDaonX65d/fwEjNqlDjLVIvM9X+XVxF7
""")
-
-
##file distribute_setup.py
DISTRIBUTE_SETUP_PY = convert("""
-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
+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
""")
-
-
##file activate.sh
ACTIVATE_SH = convert("""
eJytVU1v4jAQPW9+xTT0ANVS1GsrDlRFAqmFqmG72m0rY5IJsRRslDiktNr/vuMQ8tFQpNU2B4I9
@@ -1767,8 +1851,6 @@ WAo3/36oSOTfgjwEEQKt15e9Xpqm52+oaXxszmnE9GLl65RH2OMmS6+u5acKxDmlPgj2eT5/gQOX
LLK0j1y0Uwbmn438VZkVpqlfNKa/YET/53j+99G8H8tUhr9ZSXs2
""")
-
-
##file activate.fish
ACTIVATE_FISH = convert("""
eJydVm1v4jgQ/s6vmA1wBxUE7X2stJVYlVWR2lK13d6d9laRk0yIr8HmbIe0++tvnIQQB9pbXT5A
@@ -1792,8 +1874,6 @@ mWmZmIIpnDFrbXakvKWeZhLwhvrbUH8fahhqD0YUcBDJjEBMQwiznE4y5QbHrbhHBOnUAYzb2tVN
jJa65e+eE2Ya30E2GurxUP8ssA6e/wOnvo3V78d3vTcvMB3n7l3iX1JXWqk=
""")
-
-
##file activate.csh
ACTIVATE_CSH = convert("""
eJx9U11vmzAUffevOCVRu+UB9pws29Kl0iq1aVWllaZlcgxciiViItsQdb9+xiQp+dh4QOB7Pu49
@@ -1807,8 +1887,6 @@ lXiVyXa9Sy3JdClEyK1dD6Nos9mEf8iKlOpmqSNTZnYjNEWiUYn2pKNB3ttcLJ3HmYYXy6Un76f7
r8rRsC1TpTJj7f19m5sUf/V3Ir+x/yjtLu8KjLX/CmN/AcVGUUo=
""")
-
-
##file activate.bat
ACTIVATE_BAT = convert("""
eJyFUkEKgzAQvAfyhz0YaL9QEWpRqlSjWGspFPZQTevFHOr/adQaU1GaUzI7Mzu7ZF89XhKkEJS8
@@ -1817,8 +1895,6 @@ sX9mtzxIeJDE/mg4OGp47qoLo3NHX2jsMB3AiDht5hryAUOEifoTdCXbSh7V0My2NMq/Xbh5MEjU
ZT63gpgNT9lKOJ/CtHsvT99re3pX303kydn4HeyOeAg5cjf2EW1D6HOPkg9NGKhu
""")
-
-
##file deactivate.bat
DEACTIVATE_BAT = convert("""
eJxzSE3OyFfIT0vj4spMU0hJTcvMS01RiPf3cYkP8wwKCXX0iQ8I8vcNCFHQ4FIAguLUEgWIgK0q
@@ -1826,8 +1902,6 @@ FlWqXJpcICVYpGzx2BAZ4uHv5+Hv6wq1BWINXBTdKriEKkI1DhW2QAfhttcxxANiFZCBbglQSJUL
i2dASrm4rFz9XLgAwJNbyQ==
""")
-
-
##file distutils-init.py
DISTUTILS_INIT = convert("""
eJytV92L4zYQf/dfMU0ottuse7RvC6FQrg8Lxz2Ugz4si9HacqKuIxlJ2ST313dG8odkO9d7aGBB
@@ -1854,8 +1928,6 @@ gtEMcW1xKr/he4/6IQ6FUXP+0gkioHY5iwC9Eyx3HKO7af0zPPe+XyLn7fAY78k4aiR387bCr5XT
5C4rFgwLGfMvJuAMew==
""")
-
-
##file distutils.cfg
DISTUTILS_CFG = convert("""
eJxNj00KwkAMhfc9xYNuxe4Ft57AjYiUtDO1wXSmNJnK3N5pdSEEAu8nH6lxHVlRhtDHMPATA4uH
@@ -1863,8 +1935,6 @@ xJ4EFmGbvfJiicSHFRzUSISMY6hq3GLCRLnIvSTnEefN0FIjw5tF0Hkk9Q5dRunBsVoyFi24aaLg
9FDOlL0FPGluf4QjcInLlxd6f6rqkgPu/5nHLg0cXCscXoozRrP51DRT3j9QNl99AP53T2Q=
""")
-
-
##file activate_this.py
ACTIVATE_THIS = convert("""
eJyNUlGL2zAMfvevEBlHEujSsXsL9GGDvW1jD3sZpQQ3Ua7aJXawnbT595Ocpe0dO5ghseVP+vRJ
@@ -1878,8 +1948,6 @@ xu/Lx8M/UvCLTxW7VULHxB1PRRbrYfvWNY5S8it008jOjcleaMqVBDnUXcWULV2YK9JEQ92OfC96
3vMWehjQNJmE5VePlZbL61nzX3S93ZcfDqznnkb9AZ3GWJU=
""")
-
-
if __name__ == '__main__':
main()
diff --git a/virtualenv_support/distribute-0.6.15.tar.gz b/virtualenv_support/distribute-0.6.15.tar.gz
deleted file mode 100644
index 74c1207..0000000
--- a/virtualenv_support/distribute-0.6.15.tar.gz
+++ /dev/null
Binary files differ
diff --git a/virtualenv_support/distribute-0.6.19.tar.gz b/virtualenv_support/distribute-0.6.19.tar.gz
new file mode 100644
index 0000000..647aa11
--- /dev/null
+++ b/virtualenv_support/distribute-0.6.19.tar.gz
Binary files differ
diff --git a/virtualenv_support/pip-1.0.2.tar.gz b/virtualenv_support/pip-1.0.2.tar.gz
new file mode 100644
index 0000000..94d7b66
--- /dev/null
+++ b/virtualenv_support/pip-1.0.2.tar.gz
Binary files differ
diff --git a/virtualenv_support/pip-1.0.tar.gz b/virtualenv_support/pip-1.0.tar.gz
deleted file mode 100644
index 81ab41d..0000000
--- a/virtualenv_support/pip-1.0.tar.gz
+++ /dev/null
Binary files differ