Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make suggestion when the current stable version has no wheel but a pre-release does #4795

Open
Husky2490 opened this issue Oct 19, 2017 · 21 comments
Labels
C: error messages Improving error messages resolution: deferred till PR Further discussion will happen when a PR is made type: feature request Request for a new feature UX User experience related

Comments

@Husky2490
Copy link

Husky2490 commented Oct 19, 2017

  • Pip version: 9.0.1
  • Python version: 3.6.1
  • Operating system: Microsoft Windows [Version 10.0.15063]

Description:

I was trying to install two Python modules, NumPy and SciPy, NumPy installed successfully but SciPy did not. After a while of trying to figure out why it was complaining about missing a bunch of files I decided to check on PyPi to see if there was an alternate download. And, lo and behold, none of the files listed for download were for version 0.19.1, which pip said was the most recent, but instead version 1.0.0rc2, released today (October 18th). After a bit of trial and error, I worked out how to force-feed the file to pip.

What I've run:

I copied the entire cmd prompt session into the attached txt file below
pip-bug_cmd-line-output.txt

Expand for log (edited by @pradyunsg)

Microsoft Windows [Version 10.0.15063]
(c) 2017 Microsoft Corporation. All rights reserved.

C:\windows\system32>pip install NumPy SciPy
Collecting NumPy
Using cached numpy-1.13.3-cp36-none-win_amd64.whl
Collecting SciPy
Using cached scipy-0.19.1.tar.gz
Installing collected packages: NumPy, SciPy
Running setup.py install for SciPy ... error
Complete output from command "c:\program files\python36\python.exe" -u -c "import setuptools, tokenize;file='C:\Users\s530101\AppData\Local\Temp\pip-build-gyp34ubz\SciPy\setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record C:\Users\s530101\AppData\Local\Temp\pip-qeq_kx7u-record\install-record.txt --single-version-externally-managed --compile:

Note: if you need reliable uninstall behavior, then install
with pip instead of using `setup.py install`:

  - `pip install .`       (from a git repo or downloaded source
                           release)
  - `pip install scipy`   (last SciPy release on PyPI)


lapack_opt_info:
lapack_mkl_info:
  libraries mkl_rt not found in ['c:\\program files\\python36\\lib', 'C:\\', 'c:\\program files\\python36\\libs']
  NOT AVAILABLE

openblas_lapack_info:
c:\program files\python36\lib\site-packages\numpy\distutils\system_info.py:655: UserWarning: Specified path c:\opt\64\lib is invalid.
  return self.get_paths(self.section, key)
  libraries libopenblas_v0.2.20_mingwpy not found in []
  NOT AVAILABLE

atlas_3_10_threads_info:
Setting PTATLAS=ATLAS
  libraries tatlas,tatlas not found in c:\program files\python36\lib
  libraries lapack_atlas not found in c:\program files\python36\lib
  libraries tatlas,tatlas not found in C:\
  libraries lapack_atlas not found in C:\
  libraries tatlas,tatlas not found in c:\program files\python36\libs
  libraries lapack_atlas not found in c:\program files\python36\libs
<class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
  NOT AVAILABLE

atlas_3_10_info:
  libraries satlas,satlas not found in c:\program files\python36\lib
  libraries lapack_atlas not found in c:\program files\python36\lib
  libraries satlas,satlas not found in C:\
  libraries lapack_atlas not found in C:\
  libraries satlas,satlas not found in c:\program files\python36\libs
  libraries lapack_atlas not found in c:\program files\python36\libs
<class 'numpy.distutils.system_info.atlas_3_10_info'>
  NOT AVAILABLE

atlas_threads_info:
Setting PTATLAS=ATLAS
  libraries ptf77blas,ptcblas,atlas not found in c:\program files\python36\lib
  libraries lapack_atlas not found in c:\program files\python36\lib
  libraries ptf77blas,ptcblas,atlas not found in C:\
  libraries lapack_atlas not found in C:\
  libraries ptf77blas,ptcblas,atlas not found in c:\program files\python36\libs
  libraries lapack_atlas not found in c:\program files\python36\libs
<class 'numpy.distutils.system_info.atlas_threads_info'>
  NOT AVAILABLE

atlas_info:
  libraries f77blas,cblas,atlas not found in c:\program files\python36\lib
  libraries lapack_atlas not found in c:\program files\python36\lib
  libraries f77blas,cblas,atlas not found in C:\
  libraries lapack_atlas not found in C:\
  libraries f77blas,cblas,atlas not found in c:\program files\python36\libs
  libraries lapack_atlas not found in c:\program files\python36\libs
<class 'numpy.distutils.system_info.atlas_info'>
  NOT AVAILABLE

c:\program files\python36\lib\site-packages\numpy\distutils\system_info.py:572: UserWarning:
    Atlas (http://math-atlas.sourceforge.net/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [atlas]) or by setting
    the ATLAS environment variable.
  self.calc_info()
lapack_info:
  libraries lapack not found in ['c:\\program files\\python36\\lib', 'C:\\', 'c:\\program files\\python36\\libs']
  NOT AVAILABLE

c:\program files\python36\lib\site-packages\numpy\distutils\system_info.py:572: UserWarning:
    Lapack (http://www.netlib.org/lapack/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [lapack]) or by setting
    the LAPACK environment variable.
  self.calc_info()
lapack_src_info:
  NOT AVAILABLE

c:\program files\python36\lib\site-packages\numpy\distutils\system_info.py:572: UserWarning:
    Lapack (http://www.netlib.org/lapack/) sources not found.
    Directories to search for the sources can be specified in the
    numpy/distutils/site.cfg file (section [lapack_src]) or by setting
    the LAPACK_SRC environment variable.
  self.calc_info()
  NOT AVAILABLE

Running from scipy source directory.
non-existing path in 'scipy\\integrate': 'quadpack.h'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\s530101\AppData\Local\Temp\pip-build-gyp34ubz\SciPy\setup.py", line 416, in <module>
    setup_package()
  File "C:\Users\s530101\AppData\Local\Temp\pip-build-gyp34ubz\SciPy\setup.py", line 412, in setup_package
    setup(**metadata)
  File "c:\program files\python36\lib\site-packages\numpy\distutils\core.py", line 135, in setup
    config = configuration()
  File "C:\Users\s530101\AppData\Local\Temp\pip-build-gyp34ubz\SciPy\setup.py", line 336, in configuration
    config.add_subpackage('scipy')
  File "c:\program files\python36\lib\site-packages\numpy\distutils\misc_util.py", line 1029, in add_subpackage
    caller_level = 2)
  File "c:\program files\python36\lib\site-packages\numpy\distutils\misc_util.py", line 998, in get_subpackage
    caller_level = caller_level + 1)
  File "c:\program files\python36\lib\site-packages\numpy\distutils\misc_util.py", line 935, in _get_configuration_from_setup_py
    config = setup_module.configuration(*args)
  File "scipy\setup.py", line 15, in configuration
    config.add_subpackage('linalg')
  File "c:\program files\python36\lib\site-packages\numpy\distutils\misc_util.py", line 1029, in add_subpackage
    caller_level = 2)
  File "c:\program files\python36\lib\site-packages\numpy\distutils\misc_util.py", line 998, in get_subpackage
    caller_level = caller_level + 1)
  File "c:\program files\python36\lib\site-packages\numpy\distutils\misc_util.py", line 935, in _get_configuration_from_setup_py
    config = setup_module.configuration(*args)
  File "scipy\linalg\setup.py", line 20, in configuration
    raise NotFoundError('no lapack/blas resources found')
numpy.distutils.system_info.NotFoundError: no lapack/blas resources found

----------------------------------------

Command ""c:\program files\python36\python.exe" -u -c "import setuptools, tokenize;file='C:\Users\s530101\AppData\Local\Temp\pip-build-gyp34ubz\SciPy\setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record C:\Users\s530101\AppData\Local\Temp\pip-qeq_kx7u-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\s530101\AppData\Local\Temp\pip-build-gyp34ubz\SciPy\

C:\windows\system32>pip -h

Usage:
pip [options]

Commands:
install Install packages.
download Download packages.
uninstall Uninstall packages.
freeze Output installed packages in requirements format.
list List installed packages.
show Show information about installed packages.
check Verify installed packages have compatible dependencies.
search Search PyPI for packages.
wheel Build wheels from your requirements.
hash Compute hashes of package archives.
completion A helper command used for command completion.
help Show help for commands.

General Options:
-h, --help Show help.
--isolated Run pip in an isolated mode, ignoring
environment variables and user configuration.
-v, --verbose Give more output. Option is additive, and can be
used up to 3 times.
-V, --version Show version and exit.
-q, --quiet Give less output. Option is additive, and can be
used up to 3 times (corresponding to WARNING,
ERROR, and CRITICAL logging levels).
--log Path to a verbose appending log.
--proxy Specify a proxy in the form
[user:passwd@]proxy.server:port.
--retries Maximum number of retries each connection should
attempt (default 5 times).
--timeout Set the socket timeout (default 15 seconds).
--exists-action Default action when a path already exists:
(s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
--trusted-host Mark this host as trusted, even though it does
not have valid or any HTTPS.
--cert Path to alternate CA bundle.
--client-cert Path to SSL client certificate, a single file
containing the private key and the certificate
in PEM format.
--cache-dir

Store the cache data in .
--no-cache-dir Disable the cache.
--disable-pip-version-check
Don't periodically check PyPI to determine
whether a new version of pip is available for
download. Implied with --no-index.

C:\windows\system32>pip install -h

Usage:
pip install [options] [package-index-options] ...
pip install [options] -r [package-index-options] ...
pip install [options] [-e] ...
pip install [options] [-e] ...
pip install [options] <archive url/path> ...

Description:
Install packages from:

  • PyPI (and other indexes) using requirement specifiers.
  • VCS project urls.
  • Local project directories.
  • Local or remote source archives.

pip also supports installing from "requirements files", which provide
an easy way to specify a whole environment to be installed.

Install Options:
-c, --constraint Constrain versions using the given constraints
file. This option can be used multiple times.
-e, --editable <path/url> Install a project in editable mode (i.e.
setuptools "develop mode") from a local project
path or a VCS url.
-r, --requirement Install from the given requirements file. This
option can be used multiple times.
-b, --build

Directory to unpack packages into and build in.
-t, --target
Install packages into . By default this
will not replace existing files/folders in
. Use --upgrade to replace existing
packages in
with new versions.
-d, --download
Download packages into instead of
installing them, regardless of what's already
installed.
--src Directory to check out editable projects into.
The default in a virtualenv is "/src". The default for global installs is
"/src".
-U, --upgrade Upgrade all specified packages to the newest
available version. The handling of dependencies
depends on the upgrade-strategy used.
--upgrade-strategy <upgrade_strategy>
Determines how dependency upgrading should be
handled. "eager" - dependencies are upgraded
regardless of whether the currently installed
version satisfies the requirements of the
upgraded package(s). "only-if-needed" - are
upgraded only when they do not satisfy the
requirements of the upgraded package(s).
--force-reinstall When upgrading, reinstall all packages even if
they are already up-to-date.
-I, --ignore-installed Ignore the installed packages (reinstalling
instead).
--ignore-requires-python Ignore the Requires-Python information.
--no-deps Don't install package dependencies.
--install-option Extra arguments to be supplied to the setup.py
install command (use like --install-option="--
install-scripts=/usr/local/bin"). Use multiple
--install-option options to pass multiple
options to setup.py install. If you are using an
option with a directory path, be sure to use
absolute path.
--global-option Extra global options to be supplied to the
setup.py call before the install command.
--user Install to the Python user install directory for
your platform. Typically ~/.local/, or
%APPDATA%\Python on Windows. (See the Python
documentation for site.USER_BASE for full
details.)
--egg Install packages as eggs, not 'flat', like pip
normally does. This option is not about
installing from eggs. (WARNING: Because this
option overrides pip's normal install logic,
requirements files may not behave as expected.)
--root Install everything relative to this alternate
root directory.
--prefix Installation prefix where lib, bin and other
top-level folders are placed
--compile Compile py files to pyc
--no-compile Do not compile py files to pyc
--no-use-wheel Do not Find and prefer wheel archives when
searching indexes and find-links locations.
DEPRECATED in favour of --no-binary.
--no-binary <format_control>
Do not use binary packages. Can be supplied
multiple times, and each time adds to the
existing value. Accepts either :all: to disable
all binary packages, :none: to empty the set, or
one or more package names with commas between
them. Note that some packages are tricky to
compile and may fail to install when this option
is used on them.
--only-binary <format_control>
Do not use source packages. Can be supplied
multiple times, and each time adds to the
existing value. Accepts either :all: to disable
all source packages, :none: to empty the set, or
one or more package names with commas between
them. Packages without binary distributions will
fail to install when this option is used on
them.
--pre Include pre-release and development versions. By
default, pip only finds stable versions.
--no-clean Don't clean up build directories.
--require-hashes Require a hash to check each requirement
against, for repeatable installs. This option is
implied when any package in a requirements file
has a --hash option.

Package Index Options (including deprecated options):
-i, --index-url Base URL of Python Package Index (default
https://pypi.python.org/simple). This should
point to a repository compliant with PEP 503
(the simple repository API) or a local directory
laid out in the same format.
--extra-index-url Extra URLs of package indexes to use in addition
to --index-url. Should follow the same rules as
--index-url.
--no-index Ignore package index (only looking at --find-
links URLs instead).
-f, --find-links If a url or path to an html file, then parse for
links to archives. If a local path or file://
url that's a directory, then look for archives
in the directory listing.
--process-dependency-links Enable the processing of dependency links.

General Options:
-h, --help Show help.
--isolated Run pip in an isolated mode, ignoring
environment variables and user configuration.
-v, --verbose Give more output. Option is additive, and can be
used up to 3 times.
-V, --version Show version and exit.
-q, --quiet Give less output. Option is additive, and can be
used up to 3 times (corresponding to WARNING,
ERROR, and CRITICAL logging levels).
--log Path to a verbose appending log.
--proxy Specify a proxy in the form
[user:passwd@]proxy.server:port.
--retries Maximum number of retries each connection should
attempt (default 5 times).
--timeout Set the socket timeout (default 15 seconds).
--exists-action Default action when a path already exists:
(s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
--trusted-host Mark this host as trusted, even though it does
not have valid or any HTTPS.
--cert Path to alternate CA bundle.
--client-cert Path to SSL client certificate, a single file
containing the private key and the certificate
in PEM format.
--cache-dir

Store the cache data in .
--no-cache-dir Disable the cache.
--disable-pip-version-check
Don't periodically check PyPI to determine
whether a new version of pip is available for
download. Implied with --no-index.

C:\windows\system32>pip install -U
You must give at least one requirement to install (see "pip help install")

C:\windows\system32>pip install -U pip
Requirement already up-to-date: pip in c:\program files\python36\lib\site-packages

C:\windows\system32>pip install -U SciPi
Collecting SciPi
Could not find a version that satisfies the requirement SciPi (from versions: )
No matching distribution found for SciPi

C:\windows\system32>pip install -U SciPy
Collecting SciPy
Using cached scipy-0.19.1.tar.gz
Installing collected packages: SciPy
Running setup.py install for SciPy ... error
Complete output from command "c:\program files\python36\python.exe" -u -c "import setuptools, tokenize;file='C:\Users\s530101\AppData\Local\Temp\pip-build-m91wwnr_\SciPy\setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record C:\Users\s530101\AppData\Local\Temp\pip-bu54g7sh-record\install-record.txt --single-version-externally-managed --compile:

Note: if you need reliable uninstall behavior, then install
with pip instead of using `setup.py install`:

  - `pip install .`       (from a git repo or downloaded source
                           release)
  - `pip install scipy`   (last SciPy release on PyPI)


lapack_opt_info:
lapack_mkl_info:
  libraries mkl_rt not found in ['c:\\program files\\python36\\lib', 'C:\\', 'c:\\program files\\python36\\libs']
  NOT AVAILABLE

openblas_lapack_info:
c:\program files\python36\lib\site-packages\numpy\distutils\system_info.py:655: UserWarning: Specified path c:\opt\64\lib is invalid.
  return self.get_paths(self.section, key)
  libraries libopenblas_v0.2.20_mingwpy not found in []
  NOT AVAILABLE

atlas_3_10_threads_info:
Setting PTATLAS=ATLAS
  libraries tatlas,tatlas not found in c:\program files\python36\lib
  libraries lapack_atlas not found in c:\program files\python36\lib
  libraries tatlas,tatlas not found in C:\
  libraries lapack_atlas not found in C:\
  libraries tatlas,tatlas not found in c:\program files\python36\libs
  libraries lapack_atlas not found in c:\program files\python36\libs
<class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
  NOT AVAILABLE

atlas_3_10_info:
  libraries satlas,satlas not found in c:\program files\python36\lib
  libraries lapack_atlas not found in c:\program files\python36\lib
  libraries satlas,satlas not found in C:\
  libraries lapack_atlas not found in C:\
  libraries satlas,satlas not found in c:\program files\python36\libs
  libraries lapack_atlas not found in c:\program files\python36\libs
<class 'numpy.distutils.system_info.atlas_3_10_info'>
  NOT AVAILABLE

atlas_threads_info:
Setting PTATLAS=ATLAS
  libraries ptf77blas,ptcblas,atlas not found in c:\program files\python36\lib
  libraries lapack_atlas not found in c:\program files\python36\lib
  libraries ptf77blas,ptcblas,atlas not found in C:\
  libraries lapack_atlas not found in C:\
  libraries ptf77blas,ptcblas,atlas not found in c:\program files\python36\libs
  libraries lapack_atlas not found in c:\program files\python36\libs
<class 'numpy.distutils.system_info.atlas_threads_info'>
  NOT AVAILABLE

atlas_info:
  libraries f77blas,cblas,atlas not found in c:\program files\python36\lib
  libraries lapack_atlas not found in c:\program files\python36\lib
  libraries f77blas,cblas,atlas not found in C:\
  libraries lapack_atlas not found in C:\
  libraries f77blas,cblas,atlas not found in c:\program files\python36\libs
  libraries lapack_atlas not found in c:\program files\python36\libs
<class 'numpy.distutils.system_info.atlas_info'>
  NOT AVAILABLE

c:\program files\python36\lib\site-packages\numpy\distutils\system_info.py:572: UserWarning:
    Atlas (http://math-atlas.sourceforge.net/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [atlas]) or by setting
    the ATLAS environment variable.
  self.calc_info()
lapack_info:
  libraries lapack not found in ['c:\\program files\\python36\\lib', 'C:\\', 'c:\\program files\\python36\\libs']
  NOT AVAILABLE

c:\program files\python36\lib\site-packages\numpy\distutils\system_info.py:572: UserWarning:
    Lapack (http://www.netlib.org/lapack/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [lapack]) or by setting
    the LAPACK environment variable.
  self.calc_info()
lapack_src_info:
  NOT AVAILABLE

c:\program files\python36\lib\site-packages\numpy\distutils\system_info.py:572: UserWarning:
    Lapack (http://www.netlib.org/lapack/) sources not found.
    Directories to search for the sources can be specified in the
    numpy/distutils/site.cfg file (section [lapack_src]) or by setting
    the LAPACK_SRC environment variable.
  self.calc_info()
  NOT AVAILABLE

Running from scipy source directory.
non-existing path in 'scipy\\integrate': 'quadpack.h'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\s530101\AppData\Local\Temp\pip-build-m91wwnr_\SciPy\setup.py", line 416, in <module>
    setup_package()
  File "C:\Users\s530101\AppData\Local\Temp\pip-build-m91wwnr_\SciPy\setup.py", line 412, in setup_package
    setup(**metadata)
  File "c:\program files\python36\lib\site-packages\numpy\distutils\core.py", line 135, in setup
    config = configuration()
  File "C:\Users\s530101\AppData\Local\Temp\pip-build-m91wwnr_\SciPy\setup.py", line 336, in configuration
    config.add_subpackage('scipy')
  File "c:\program files\python36\lib\site-packages\numpy\distutils\misc_util.py", line 1029, in add_subpackage
    caller_level = 2)
  File "c:\program files\python36\lib\site-packages\numpy\distutils\misc_util.py", line 998, in get_subpackage
    caller_level = caller_level + 1)
  File "c:\program files\python36\lib\site-packages\numpy\distutils\misc_util.py", line 935, in _get_configuration_from_setup_py
    config = setup_module.configuration(*args)
  File "scipy\setup.py", line 15, in configuration
    config.add_subpackage('linalg')
  File "c:\program files\python36\lib\site-packages\numpy\distutils\misc_util.py", line 1029, in add_subpackage
    caller_level = 2)
  File "c:\program files\python36\lib\site-packages\numpy\distutils\misc_util.py", line 998, in get_subpackage
    caller_level = caller_level + 1)
  File "c:\program files\python36\lib\site-packages\numpy\distutils\misc_util.py", line 935, in _get_configuration_from_setup_py
    config = setup_module.configuration(*args)
  File "scipy\linalg\setup.py", line 20, in configuration
    raise NotFoundError('no lapack/blas resources found')
numpy.distutils.system_info.NotFoundError: no lapack/blas resources found

----------------------------------------

Command ""c:\program files\python36\python.exe" -u -c "import setuptools, tokenize;file='C:\Users\s530101\AppData\Local\Temp\pip-build-m91wwnr_\SciPy\setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record C:\Users\s530101\AppData\Local\Temp\pip-bu54g7sh-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\s530101\AppData\Local\Temp\pip-build-m91wwnr_\SciPy\

C:\windows\system32>pip install SciPy -v
Config variable 'Py_DEBUG' is unset, Python ABI tag may be incorrect
Config variable 'WITH_PYMALLOC' is unset, Python ABI tag may be incorrect
Collecting SciPy
1 location(s) to search for versions of SciPy:

C:\windows\system32>pip search SciPy
apgl (0.8.1) - A fast python graph library based on numpy and
scipy.
austin (2016.0.1) - austin scipy package
cloudml (0.4.2) - Machine learning as a service scipy-trainer
coo_utils (0.1.2.1) - utilities for managing nested lists of lists of
scipy.sparse matrices
Cybuild (0.1.post4) - Cybuild ======= High-level compilation of
Cython extension types, based on
scipy.weave.build_tools.
dask-distance (0.2.0) - Distance computations with Dask (akin to
scipy.spatial.distance)
scipy-data_fitting (1.0.2) - Complete pipeline for easy data fitting with
Python.
ddeint (0.1.02) - Scipy-based Delay Differential Equations solver
DESPOTIC (2.1) - a Python / numPy / sciPy package to perform
calculations related to line emission and
thermal behavior in cold interstellar clouds.
euroscipy2017 (0.2) - Sample package for demonstrating flit & flonda.
python-fit (1.0.0) - A python module using scipy's orthogonal
distance regression that makes fitting data
easy.
FITS_tools (0.2) - Tools for manipulating FITS images using
primarily scipy & native python routines
scikit-fuzzy (0.3.1) - Fuzzy logic toolkit for SciPy
scikit-geodesic (1.1) - A SciPy tool for computing geodesics in an
isotropic Riemannian manifold of arbitrary
dimension. It implements the Birkhoff curve
shortening algorithm for finding global
geodesics.
scikit-gof (0.1.3) - Variations on goodness of fit tests for SciPy.
graf (0.1.2) - Light weight numpy, scipy, and matplotlib
wrapper
scikit-gstat (0.1.1) - Geostatistical expansion in the scipy style
h5sparse (0.0.4) - Scipy sparse matrix in HDF5.
hcluster (0.2.0) - A hierarchical clustering package for Scipy.
hydrobox (0.0.4) - Hydrological toolbox build on top of scipy and
pandas
scikit-image (0.13.1) - Image processing routines for SciPy
kdense (1.0.0) - Efficient kernel density estimation for
numpy+scipy.
lsq_linear (0.1.0) - Implementation of scipy.optimize.lsq_linear for
old scipy version
mathstats (0.2.6) - Statistical functions, goodness-of-fit tests
and special and special distributions not
implemented in scipy/numpy .
matscipy (0.1.4) - Generic Python Materials Science tools
mdct (0.4) - A fast MDCT implementation using SciPy and FFTs
NeuroSciPy (0.0.0) -
ParametricModeling (0.1.9) - An Sklearn interface around
scipy.optimize.least_squares for parametric
modeling
piquant (0.1) - A Python package extending NumPy and SciPy to
allow specification of numbers and arrays with
physical units.
PXL (0.0.9) - Extra functions built on NumPy, SciPy, pandas,
matplotlib, etc.
PyS3DE (1.0.5) - Python Solver via Sympy + SciPy/NumPy for
Stochastic Differential Equations!
pythreshold (0.1.2) - Numpy/Scipy implementations of some image
thresholding algorithms
rasterio (1.0a10) - Fast and direct raster I/O for use with Numpy
and SciPy
scikit-video (0.1.2) - Video processing routines for SciPy
scikits.bootstrap (0.3.3) - Bootstrap confidence interval estimation
routines for SciPy
scikits.eartho (0.1dev) - Earth Observation routines for SciPy
scikits.fitting (0.6) - Framework for fitting functions to data with
SciPy
scikits.statsmodels (0.3.1) - Statistical computations and models for use
with SciPy
scipy-stack (0.0.4) - Helper to install the SciPy stack
scipy-sugar (1.0.4) - Missing SciPy functionalities
scipy (1.0.0rc2) - SciPy: Scientific Library for Python
scipydirect (1.3) - Python wrapper to the DIRECT algorithm
scipyplot (0.0.5) - A Python Toolbox for Creating Scientific
Article Figures
ScipySim (0.1.5) - Simulation in Python.
SimpleSpectral (1.0.0) - Heavily simplified scipy.signal.spectral module
which only depends on NumPy and supports pyFFTW
spicy (0.16.0) - Because spellchecker. SciPy at your fingertips
statspy (0.1.0a1) - Python module for statistics built on top of
NumPy/SciPy
stsci.ndimage (0.10.0) - Various functions for multi-dimensional image
processing--fork of scipy.ndimage for use with
stsci_python
stscipython (2.15.1) - General astronomical data analysis and Hubble
Space Telescope data calibration
traittypes (0.0.6) - Scipy trait types

C:\windows\system32>pip -h

Usage:
pip [options]

Commands:
install Install packages.
download Download packages.
uninstall Uninstall packages.
freeze Output installed packages in requirements format.
list List installed packages.
show Show information about installed packages.
check Verify installed packages have compatible dependencies.
search Search PyPI for packages.
wheel Build wheels from your requirements.
hash Compute hashes of package archives.
completion A helper command used for command completion.
help Show help for commands.

General Options:
-h, --help Show help.
--isolated Run pip in an isolated mode, ignoring
environment variables and user configuration.
-v, --verbose Give more output. Option is additive, and can be
used up to 3 times.
-V, --version Show version and exit.
-q, --quiet Give less output. Option is additive, and can be
used up to 3 times (corresponding to WARNING,
ERROR, and CRITICAL logging levels).
--log Path to a verbose appending log.
--proxy Specify a proxy in the form
[user:passwd@]proxy.server:port.
--retries Maximum number of retries each connection should
attempt (default 5 times).
--timeout Set the socket timeout (default 15 seconds).
--exists-action Default action when a path already exists:
(s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
--trusted-host Mark this host as trusted, even though it does
not have valid or any HTTPS.
--cert Path to alternate CA bundle.
--client-cert Path to SSL client certificate, a single file
containing the private key and the certificate
in PEM format.
--cache-dir

Store the cache data in .
--no-cache-dir Disable the cache.
--disable-pip-version-check
Don't periodically check PyPI to determine
whether a new version of pip is available for
download. Implied with --no-index.

C:\windows\system32>pip search -h

Usage:
pip search [options]

Description:
Search for PyPI packages whose name or summary contains .

Search Options:
-i, --index Base URL of Python Package Index (default
https://pypi.python.org/pypi)

General Options:
-h, --help Show help.
--isolated Run pip in an isolated mode, ignoring
environment variables and user configuration.
-v, --verbose Give more output. Option is additive, and can be
used up to 3 times.
-V, --version Show version and exit.
-q, --quiet Give less output. Option is additive, and can be
used up to 3 times (corresponding to WARNING,
ERROR, and CRITICAL logging levels).
--log Path to a verbose appending log.
--proxy Specify a proxy in the form
[user:passwd@]proxy.server:port.
--retries Maximum number of retries each connection should
attempt (default 5 times).
--timeout Set the socket timeout (default 15 seconds).
--exists-action Default action when a path already exists:
(s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
--trusted-host Mark this host as trusted, even though it does
not have valid or any HTTPS.
--cert Path to alternate CA bundle.
--client-cert Path to SSL client certificate, a single file
containing the private key and the certificate
in PEM format.
--cache-dir

Store the cache data in .
--no-cache-dir Disable the cache.
--disable-pip-version-check
Don't periodically check PyPI to determine
whether a new version of pip is available for
download. Implied with --no-index.

C:\windows\system32>pip install scipy
Collecting scipy
Using cached scipy-0.19.1.tar.gz
Operation cancelled by user

C:\windows\system32>pip install -h

Usage:
pip install [options] [package-index-options] ...
pip install [options] -r [package-index-options] ...
pip install [options] [-e] ...
pip install [options] [-e] ...
pip install [options] <archive url/path> ...

Description:
Install packages from:

  • PyPI (and other indexes) using requirement specifiers.
  • VCS project urls.
  • Local project directories.
  • Local or remote source archives.

pip also supports installing from "requirements files", which provide
an easy way to specify a whole environment to be installed.

Install Options:
-c, --constraint Constrain versions using the given constraints
file. This option can be used multiple times.
-e, --editable <path/url> Install a project in editable mode (i.e.
setuptools "develop mode") from a local project
path or a VCS url.
-r, --requirement Install from the given requirements file. This
option can be used multiple times.
-b, --build

Directory to unpack packages into and build in.
-t, --target Install packages into . By default this
will not replace existing files/folders in
. Use --upgrade to replace existing
packages in with new versions.
-d, --download Download packages into instead of
installing them, regardless of what's already
installed.
--src Directory to check out editable projects into.
The default in a virtualenv is "/src". The default for global installs is
"/src".
-U, --upgrade Upgrade all specified packages to the newest
available version. The handling of dependencies
depends on the upgrade-strategy used.
--upgrade-strategy <upgrade_strategy>
Determines how dependency upgrading should be
handled. "eager" - dependencies are upgraded
regardless of whether the currently installed
version satisfies the requirements of the
upgraded package(s). "only-if-needed" - are
upgraded only when they do not satisfy the
requirements of the upgraded package(s).
--force-reinstall When upgrading, reinstall all packages even if
they are already up-to-date.
-I, --ignore-installed Ignore the installed packages (reinstalling
instead).
--ignore-requires-python Ignore the Requires-Python information.
--no-deps Don't install package dependencies.
--install-option Extra arguments to be supplied to the setup.py
install command (use like --install-option="--
install-scripts=/usr/local/bin"). Use multiple
--install-option options to pass multiple
options to setup.py install. If you are using an
option with a directory path, be sure to use
absolute path.
--global-option Extra global options to be supplied to the
setup.py call before the install command.
--user Install to the Python user install directory for
your platform. Typically ~/.local/, or
%APPDATA%\Python on Windows. (See the Python
documentation for site.USER_BASE for full
details.)
--egg Install packages as eggs, not 'flat', like pip
normally does. This option is not about
installing from eggs. (WARNING: Because this
option overrides pip's normal install logic,
requirements files may not behave as expected.)
--root Install everything relative to this alternate
root directory.
--prefix Installation prefix where lib, bin and other
top-level folders are placed
--compile Compile py files to pyc
--no-compile Do not compile py files to pyc
--no-use-wheel Do not Find and prefer wheel archives when
searching indexes and find-links locations.
DEPRECATED in favour of --no-binary.
--no-binary <format_control>
Do not use binary packages. Can be supplied
multiple times, and each time adds to the
existing value. Accepts either :all: to disable
all binary packages, :none: to empty the set, or
one or more package names with commas between
them. Note that some packages are tricky to
compile and may fail to install when this option
is used on them.
--only-binary <format_control>
Do not use source packages. Can be supplied
multiple times, and each time adds to the
existing value. Accepts either :all: to disable
all source packages, :none: to empty the set, or
one or more package names with commas between
them. Packages without binary distributions will
fail to install when this option is used on
them.
--pre Include pre-release and development versions. By
default, pip only finds stable versions.
--no-clean Don't clean up build directories.
--require-hashes Require a hash to check each requirement
against, for repeatable installs. This option is
implied when any package in a requirements file
has a --hash option.

Package Index Options (including deprecated options):
-i, --index-url Base URL of Python Package Index (default
https://pypi.python.org/simple). This should
point to a repository compliant with PEP 503
(the simple repository API) or a local directory
laid out in the same format.
--extra-index-url Extra URLs of package indexes to use in addition
to --index-url. Should follow the same rules as
--index-url.
--no-index Ignore package index (only looking at --find-
links URLs instead).
-f, --find-links If a url or path to an html file, then parse for
links to archives. If a local path or file://
url that's a directory, then look for archives
in the directory listing.
--process-dependency-links Enable the processing of dependency links.

General Options:
-h, --help Show help.
--isolated Run pip in an isolated mode, ignoring
environment variables and user configuration.
-v, --verbose Give more output. Option is additive, and can be
used up to 3 times.
-V, --version Show version and exit.
-q, --quiet Give less output. Option is additive, and can be
used up to 3 times (corresponding to WARNING,
ERROR, and CRITICAL logging levels).
--log Path to a verbose appending log.
--proxy Specify a proxy in the form
[user:passwd@]proxy.server:port.
--retries Maximum number of retries each connection should
attempt (default 5 times).
--timeout Set the socket timeout (default 15 seconds).
--exists-action Default action when a path already exists:
(s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
--trusted-host Mark this host as trusted, even though it does
not have valid or any HTTPS.
--cert Path to alternate CA bundle.
--client-cert Path to SSL client certificate, a single file
containing the private key and the certificate
in PEM format.
--cache-dir

Store the cache data in .
--no-cache-dir Disable the cache.
--disable-pip-version-check
Don't periodically check PyPI to determine
whether a new version of pip is available for
download. Implied with --no-index.

C:\windows\system32>pip -V
pip 9.0.1 from c:\program files\python36\lib\site-packages (python 3.6)

C:\windows\system32>pip install scipy-1.0.0rc2-cp36-none-win_amd64.whl
Requirement 'scipy-1.0.0rc2-cp36-none-win_amd64.whl' looks like a filename, but the file does not exist
Processing c:\windows\system32\scipy-1.0.0rc2-cp36-none-win_amd64.whl
Exception:
Traceback (most recent call last):
File "c:\program files\python36\lib\site-packages\pip\basecommand.py", line 215, in main
status = self.run(options, args)
File "c:\program files\python36\lib\site-packages\pip\commands\install.py", line 324, in run
requirement_set.prepare_files(finder)
File "c:\program files\python36\lib\site-packages\pip\req\req_set.py", line 380, in prepare_files
ignore_dependencies=self.ignore_dependencies))
File "c:\program files\python36\lib\site-packages\pip\req\req_set.py", line 620, in prepare_file
session=self.session, hashes=hashes)
File "c:\program files\python36\lib\site-packages\pip\download.py", line 809, in unpack_url
unpack_file_url(link, location, download_dir, hashes=hashes)
File "c:\program files\python36\lib\site-packages\pip\download.py", line 715, in unpack_file_url
unpack_file(from_path, location, content_type, link)
File "c:\program files\python36\lib\site-packages\pip\utils_init
.py", line 599, in unpack_file
flatten=not filename.endswith('.whl')
File "c:\program files\python36\lib\site-packages\pip\utils_init_.py", line 482, in unzip_file
zipfp = open(filename, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: 'C:\windows\system32\scipy-1.0.0rc2-cp36-none-win_amd64.whl'

C:\windows\system32>pip install scipy scipy-1.0.0rc2-cp36-none-win_amd64.whl
Requirement 'scipy-1.0.0rc2-cp36-none-win_amd64.whl' looks like a filename, but the file does not exist
Double requirement given: scipy==1.0.0rc2 from file:///C:/windows/system32/scipy-1.0.0rc2-cp36-none-win_amd64.whl (already in scipy, name='scipy')

C:\windows\system32>pip install scipy https://pypi.python.org/packages/ed/23/cc831da308cf4f7e319c73e32197a1204daed6ce8c76c741fcaf1903c489/scipy-1.0.0rc2-cp36-none-win_amd64.whl#md5=9184ee5f1dd5745e42901b0a9de40373
Double requirement given: scipy==1.0.0rc2 from https://pypi.python.org/packages/ed/23/cc831da308cf4f7e319c73e32197a1204daed6ce8c76c741fcaf1903c489/scipy-1.0.0rc2-cp36-none-win_amd64.whl#md5=9184ee5f1dd5745e42901b0a9de40373 (already in scipy, name='scipy')

C:\windows\system32>pip install https://pypi.python.org/packages/ed/23/cc831da308cf4f7e319c73e32197a1204daed6ce8c76c741fcaf1903c489/scipy-1.0.0rc2-cp36-none-win_amd64.whl#md5=9184ee5f1dd5745e42901b0a9de40373
Collecting scipy==1.0.0rc2 from https://pypi.python.org/packages/ed/23/cc831da308cf4f7e319c73e32197a1204daed6ce8c76c741fcaf1903c489/scipy-1.0.0rc2-cp36-none-win_amd64.whl#md5=9184ee5f1dd5745e42901b0a9de40373
Downloading scipy-1.0.0rc2-cp36-none-win_amd64.whl (30.8MB)
100% |████████████████████████████████| 30.8MB 41kB/s
Requirement already satisfied: numpy>=1.8.2 in c:\program files\python36\lib\site-packages (from scipy==1.0.0rc2)
Installing collected packages: scipy
Successfully installed scipy-1.0.0rc2

@benoit-pierre
Copy link
Member

This is normal, 1.0.0rc2 is a pre-release version, by default pip only finds stable versions. Use the install --pre option to change the behavior:

 --pre    Include pre-release and development versions. By default, pip only finds stable versions.

@pradyunsg pradyunsg added resolution: invalid Invalid issue/PR type: support User Support labels Oct 19, 2017
@pradyunsg
Copy link
Member

Adding to what @benoit-pierre said, you'd probably want to do:

pip install -U --pre scipy

@ghost
Copy link

ghost commented Oct 19, 2017

I understand that this is a small use case (a few months ago SciPy couldn't even be compiled on windows), but IMHO it's worth considering an improved user experience here. I suggest a simple warning message when there is a pre-release wheel available but only a source distribution for the stable version:

Note: the current stable version has no wheel but a pre-release does. Use --pre to install.

@astrojuanlu
Copy link
Contributor

My answer would be: "please try again" :) Now SciPy has wheels for Windows.

@Husky2490
Copy link
Author

Husky2490 commented Nov 10, 2017

I suggest a simple warning message when there is a pre-release wheel available but only a source distribution for the stable version:

Note: the current stable version has no wheel but a pre-release does. Use --pre to install.

Has this been marked as a feature request yet?

Edit: I think that it might be best to put that as its own issue for searchability and clarity

@pfmoore pfmoore added the type: feature request Request for a new feature label Nov 10, 2017
@ghost
Copy link

ghost commented Nov 10, 2017

?

@Husky2490
Copy link
Author

Maybe I'm just being dumb (please tell me if I am)

@Husky2490
Copy link
Author

Husky2490 commented Nov 10, 2017

I am very indecisive about things like this. Always have, most likely always will be. I think it's some kind of social anxiety as I feel like I will be wasting other people's time no matter what I choose to do sometimes.
Edit: spelling

@pfmoore
Copy link
Member

pfmoore commented Nov 10, 2017

I marked this issue as a feature request, as you asked. You closed it (about the same time). I'm confused too. As a closed feature request, no-one is likely to do anything about it. If you'd left it open, then it's waiting for someone to submit a PR (maybe you, maybe someone else).

I certainly don't mind it being marked as a feature request. That doesn't waste anyone's time - it just flags it as a possible enhancement that would be useful to someone, and might be something that someone would like to pick up and implement. You've highlighted an area where pip could be improved, that's a useful contribution even if nothing further ever happens, and it's appreciated.

@Husky2490
Copy link
Author

alright

@Husky2490 Husky2490 reopened this Nov 10, 2017
@pradyunsg pradyunsg removed the resolution: invalid Invalid issue/PR label Nov 10, 2017
@chrahunt chrahunt added state: awaiting PR Feature discussed, PR is needed and removed type: support User Support labels Sep 15, 2019
@pradyunsg pradyunsg added this to the Print Better Error Messages milestone Mar 6, 2020
@deveshks
Copy link
Contributor

I created a minimal package testpkg with version 1.0.0.dev0, and then created an sdist for it, and then tried the following commands

I first tried to install it without providing the --pre flag, and pip couldn't find it, even though I have a source distribution with the development version.

pip install --no-cache  --find-links=/Users/devesh/Desktop/testpkg/dist/ testpkg==1.0.*
Looking in links: /Users/devesh/Desktop/testpkg/dist/
ERROR: Could not find a version that satisfies the requirement testpkg==1.0.* (from versions: 1.0.0.dev0)
ERROR: No matching distribution found for testpkg==1.0.*

Now when I provided the --pre flag, pip was able to find and install it

(.env) DeveshSinghMac:testpkg devesh$ pip install --pre --no-cache  --find-links=/Users/devesh/Desktop/testpkg/dist/ testpkg==1.0.* 
Looking in links: /Users/devesh/Desktop/testpkg/dist/
Processing ./dist/testpkg-1.0.0.dev0.tar.gz
  WARNING: Requested testpkg==1.0.* from file:///Users/devesh/Desktop/testpkg/dist/testpkg-1.0.0.dev0.tar.gz, but installing version 1.0.0.dev0
Building wheels for collected packages: testpkg
  Building wheel for testpkg (setup.py) ... done
  Created wheel for testpkg: filename=testpkg-1.0.0.dev0-py3-none-any.whl size=1404 sha256=3d5204bc87fc286062115c7621a2ff8f9bb9a689210def6ca67622f46f1db1be
  Stored in directory: /private/var/folders/xg/blp845_s0xn093dyrtgy936h0000gp/T/pip-ephem-wheel-cache-i_10krxc/wheels/00/71/2e/7fad5819728fd08c9f0d89a85bf5f794c25ee7042ca3e4524e
Successfully built testpkg
Installing collected packages: testpkg
Successfully installed testpkg-1.0.0.dev0

So now, if I understand correctly, for this feature, we should be printing the warning Note: the current stable version has no wheel but a pre-release does. Use --pre to install in the first case?

@uranusjr
Copy link
Member

Also related is #7579, which proposes to change the behaviour and just let pip find rc versions when no stable matches are available.

@deveshks
Copy link
Contributor

Also related is #7579 , which proposes to change the behaviour and just let pip find rc versions when no stable matches are available.

Thanks for the reference. That change seems to require a PEP update as per #7579 (comment) , which IMO is a much larger change, w.r.t this issue which is to try and find a pre-release version match according to the specifier, and suggesting the user that such a version is available and can be installed.

Considering these facts, should I go ahead and attempt this change in a PR, or we should way for resolution of #7579 , at which point this will automatically be resolved?

@uranusjr
Copy link
Member

I don’t think anyone is actively pushing a PEP change on this. Better go on and attempt the error message if you want to get this resolved.

@deveshks
Copy link
Contributor

I don’t think anyone is actively pushing a PEP change on this. Better go on and attempt the error message if you want to get this resolved.

Sure will do. But I am still wondering if this is a beneficial change, and the warning/suggestion about trying to install a pre-release actually help the user?

@uranusjr
Copy link
Member

IMO the message would be quite useful, at least from my own experience.

@deveshks
Copy link
Contributor

IMO the message would be quite useful, at least from my own experience.

Okay, I will create a PR for the same then. Also, IIUC,

versions = {
str(v) for v in specifier.filter(
# We turn the version object into a str here because otherwise
# when we're debundled but setuptools isn't, Python will see
# packaging.version.Version and
# pkg_resources._vendor.packaging.version.Version as different
# types. This way we'll use a str as a common data interchange
# format. If we stop using the pkg_resources provided specifier
# and start using our own, we can drop the cast to str().
(str(c.version) for c in candidates),
prereleases=allow_prereleases,
)
}

is where we decide whether to include or exclude prereleases. So either we can

  1. Always include pre-releases and then filter them out if -pre flag was not set, and then if no applicable_candidates were found, raise a warning. This is a more eager approach.

  2. If -pre flag was not set, and then if no applicable_candidates were found, rerun the specifier.filter and see if any pre-releases can be found, and if they are, raise a warning. This is a more lazy approach.

I would be happy to hear your thoughts on both of these, or if there are better ways of doing this then these two.

@pradyunsg pradyunsg changed the title Pip attempted to install an outdated version of SciPy Make suggestion when the current stable version has no wheel but a pre-release does Apr 26, 2020
@pradyunsg pradyunsg added resolution: deferred till PR Further discussion will happen when a PR is made and removed state: awaiting PR Feature discussed, PR is needed labels Apr 26, 2020
@NoahGorny
Copy link
Contributor

@deveshks I like the first approach better

@deveshks
Copy link
Contributor

@deveshks I like the first approach better

On thinking further, I actually think that the situation where a pre-release has a wheel, but a stable version does might be infrequent (For e.g. in pip, we only had pre-releases for about 2 weeks, before we will have a full release). So the second approach of considering pre-releases in the search lazily might be better, rather than eagerly searching for all pre-releases always, but since most of the times there would be a stable release found.

But I will wait for others to chime in before deciding on the approach

@pfmoore
Copy link
Member

pfmoore commented Apr 27, 2020

I'm now confused as to what's being proposed here. To state my views:

  1. Any change to what pip installs (or a change to install where it currently says nothing is available) would need a PEP 440 change, as per Follow PEP 440 and install non-dev versions if --pre is not given #7579 (comment) which notes that pip is currently PEP-compliant here.
  2. Providing a warning when pip fails to install anything but there's pre-releases available seems reasonable, but it doesn't address the OP's situation, where if I understand it, there was a normal release but only in source form. In that case --only-binary or --prefer-binary might have helped, but I suspect that anyone knowing they needed to use that would have also been able to diagnose "I got sources rather than a wheel" from the messages given.
  3. Producing a warning when we choose a source release and binaries are available for other releases (pre-release or not) is IMO too intrusive.
  4. Producing better output, showing just enough information to make it clear that we did a source install, while not overwhelming the user with build information (but still showing build errors) is a hard problem. I don't think we have it right, but I'm not sure how to improve things. Ideas are welcome here.

So adding a warning is probably OK in theory, but I don't think there's any particular evidence that it would be useful in practice.

@deveshks
Copy link
Contributor

  1. Any change to what pip installs (or a change to install where it currently says nothing is available) would need a PEP 440 change, as per Follow PEP 440 and install non-dev versions if --pre is not given #7579 (comment) which notes that pip is currently PEP-compliant here.

Agreed. The final outcome of a PR generated from this will be to just to suggest the user about potential installation options, and not to change the default behaviour in any way.

  1. Providing a warning when pip fails to install anything but there's pre-releases available seems reasonable, but it doesn't address the OP's situation, where if I understand it, there was a normal release but only in source form. In that case --only-binary or --prefer-binary might have helped, but I suspect that anyone knowing they needed to use that would have also been able to diagnose "I got sources rather than a wheel" from the messages given.

I think I misread the intentions of the OP and assumed that we needed to provide a warning when pip fails to install anything but there's pre-releases available, and your outline above is the actual problem faced. But I agree that the user can figure this out on it's own as well, and the warning won't serve a real purpose. Thanks for the clarification.

  1. Producing a warning when we choose a source release and binaries are available for other releases (pre-release or not) is IMO too intrusive.

Agreed, and I think we won't go that route.

  1. Producing better output, showing just enough information to make it clear that we did a source install, while not overwhelming the user with build information (but still showing build errors) is a hard problem. I don't think we have it right, but I'm not sure how to improve things. Ideas are welcome here.

I think this is a better problem to handle, but it might be out of scope of this issue, and would warrant a new issue IMO

So adding a warning is probably OK in theory, but I don't think there's any particular evidence that it would be useful in practice.

Yes, from the different points you raised, I guess the warning might be too intrusive, or not very helpful. So if we want to address point 4, a new issue can be created. Otherwise we can go ahead and close this issue.

Also please feel free to correct me in the understanding of any of the points I mentioned above 😊

@nlhkabu nlhkabu added C: error messages Improving error messages UX User experience related labels Jul 28, 2020
@nlhkabu nlhkabu removed this from the Print Better Error Messages milestone Jul 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: error messages Improving error messages resolution: deferred till PR Further discussion will happen when a PR is made type: feature request Request for a new feature UX User experience related
Projects
None yet
Development

No branches or pull requests

10 participants