summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Stufft <donald@stufft.io>2016-01-19 11:51:26 -0500
committerDonald Stufft <donald@stufft.io>2016-01-19 11:57:48 -0500
commitf50df26c44311390351d0a76c79cfc136241ece5 (patch)
treea4f54aee4060c3e176dbc2bd5c83aa1471485848
parentdeb3f6a58d8fa2a9e40ab286d8eb6d75617462ba (diff)
downloadvirtualenv-f50df26c44311390351d0a76c79cfc136241ece5.tar.gz
Try to download the latest versions of preinstalled packages
* Will only accept Wheels (because that is all we can install without setuptools). * Will still fall back to using the bundled copies of the preinstalled packages if it cannot access the internet. This should prevent errors happening from too old of versions of software being bundled with virtualenv, while still allowing people to prevent talking to the internet with --no-download.
-rw-r--r--docs/changes.rst5
-rw-r--r--docs/reference.rst10
-rw-r--r--docs/userguide.rst4
-rwxr-xr-xvirtualenv.py61
4 files changed, 49 insertions, 31 deletions
diff --git a/docs/changes.rst b/docs/changes.rst
index 6440899..5a0d51b 100644
--- a/docs/changes.rst
+++ b/docs/changes.rst
@@ -29,6 +29,11 @@ Release History
* Remove use of () in .bat files so ``Program Files (x86)`` works :issue:`35`
+* Download new releases of the preinstalled software from PyPI when there are
+ new releases available. This behavior can be disabled using
+ ``--no-download``.
+
+
13.1.2 (2015-08-23)
-------------------
diff --git a/docs/reference.rst b/docs/reference.rst
index e9b577e..fbc005d 100644
--- a/docs/reference.rst
+++ b/docs/reference.rst
@@ -90,11 +90,13 @@ Options
Provides an alternative prompt prefix for this
environment.
-.. option:: --never-download
+.. option:: --download
- DEPRECATED. Retained only for backward compatibility.
- This option has no effect. Virtualenv never downloads
- pip or setuptools.
+ Download preinstalled packages from PyPI.
+
+.. option:: --no-download
+
+ Do not download preinstalled packages from PyPI.
.. option:: --no-site-packages
diff --git a/docs/userguide.rst b/docs/userguide.rst
index 4e552a1..d9ff5aa 100644
--- a/docs/userguide.rst
+++ b/docs/userguide.rst
@@ -128,7 +128,7 @@ below.
Removing an Environment
~~~~~~~~~~~~~~~~~~~~~~~
-Removing a virtual environment is simply done by deactivating it and deleting the
+Removing a virtual environment is simply done by deactivating it and deleting the
environment folder with all its contents::
(ENV)$ deactivate
@@ -254,5 +254,3 @@ As well as the extra directories, the search order includes:
#. The directory where virtualenv.py is located.
#. The current directory.
-If no satisfactory local distributions are found, virtualenv will
-fail. Virtualenv will never download packages.
diff --git a/virtualenv.py b/virtualenv.py
index 33473b9..9819b1c 100755
--- a/virtualenv.py
+++ b/virtualenv.py
@@ -606,12 +606,19 @@ def main():
"This option can be used multiple times.")
parser.add_option(
- '--never-download',
- dest="never_download",
+ "--download",
+ dest="download",
action="store_true",
- default=True,
- help="DEPRECATED. Retained only for backward compatibility. This option has no effect. "
- "Virtualenv never downloads pip or setuptools.")
+ help="Download preinstalled packages from PyPI.",
+ )
+
+ parser.add_option(
+ "--no-download",
+ '--never-download',
+ dest="download",
+ action="store_false",
+ help="Do not download preinstalled packages from PyPI.",
+ )
parser.add_option(
'--prompt',
@@ -682,17 +689,13 @@ def main():
make_environment_relocatable(home_dir)
return
- if not options.never_download:
- logger.warn('The --never-download option is for backward compatibility only.')
- logger.warn('Setting it to false is no longer supported, and will be ignored.')
-
create_environment(home_dir,
site_packages=options.system_site_packages,
clear=options.clear,
unzip_setuptools=options.unzip_setuptools,
prompt=options.prompt,
search_dirs=options.search_dirs,
- never_download=True,
+ download=options.download,
no_setuptools=options.no_setuptools,
no_pip=options.no_pip,
no_wheel=options.no_wheel,
@@ -811,7 +814,8 @@ def find_wheels(projects, search_dirs):
return wheels
-def install_wheel(project_names, py_executable, search_dirs=None):
+def install_wheel(project_names, py_executable, search_dirs=None,
+ download=False):
if search_dirs is None:
search_dirs = file_search_dirs()
@@ -825,25 +829,29 @@ def install_wheel(project_names, py_executable, search_dirs=None):
] + project_names
logger.start_progress('Installing %s...' % (', '.join(project_names)))
logger.indent += 2
+
+ env = {
+ "PYTHONPATH": pythonpath,
+ "JYTHONPATH": pythonpath, # for Jython < 3.x
+ "PIP_FIND_LINKS": findlinks,
+ "PIP_USE_WHEEL": "1",
+ "PIP_ONLY_BINARY": ":all:",
+ "PIP_PRE": "1",
+ "PIP_USER": "0",
+ }
+
+ if not download:
+ env["PIP_NO_INDEX"] = "1"
+
try:
- call_subprocess(cmd, show_stdout=False,
- extra_env = {
- 'PYTHONPATH': pythonpath,
- 'JYTHONPATH': pythonpath, # for Jython < 3.x
- 'PIP_FIND_LINKS': findlinks,
- 'PIP_USE_WHEEL': '1',
- 'PIP_PRE': '1',
- 'PIP_NO_INDEX': '1',
- 'PIP_USER': '0'
- }
- )
+ call_subprocess(cmd, show_stdout=False, extra_env=env)
finally:
logger.indent -= 2
logger.end_progress()
def create_environment(home_dir, site_packages=False, clear=False,
unzip_setuptools=False,
- prompt=None, search_dirs=None, never_download=False,
+ prompt=None, search_dirs=None, download=False,
no_setuptools=False, no_pip=False, no_wheel=False,
symlink=True):
"""
@@ -869,7 +877,12 @@ def create_environment(home_dir, site_packages=False, clear=False,
to_install.append('pip')
if not no_wheel:
to_install.append('wheel')
- install_wheel(to_install, py_executable, search_dirs)
+ install_wheel(
+ to_install,
+ py_executable,
+ search_dirs,
+ download=download,
+ )
install_activate(home_dir, bin_dir, prompt)