Skip to content

Installing a wheel may fail due to case sensitivity on Windows #1350

@wiggin15

Description

@wiggin15

Trying to install a package with wrong letter case (on Windows) causes the installation to fail. For example, "Logbook" is a package that is registered with a capital "L", but on Windows we can try to install its whl file with a lower-case "L". This makes "easy_install" fail, like this:

> wget https://files.pythonhosted.org/packages/13/71/3c4903fc0690059b574396e57f3d8bdf2466cd27b0b756bccd56ba7b0110/Logbook-1.3.3-cp27-cp27m-win_amd64.whl
> easy_install logbook-1.3.3-cp27-cp27m-win_amd64.whl
Processing logbook-1.3.3-cp27-cp27m-win_amd64.whl
Installing logbook-1.3.3-cp27-cp27m-win_amd64.whl to c:\cygwin\home\administrator\python\lib\site-packages
Traceback (most recent call last):
  File "c:\cygwin\home\administrator\python\lib\runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "c:\cygwin\home\administrator\python\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Cygwin\home\Administrator\python\scripts\easy_install.exe\__main__.py", line 9, in <module>
  File "c:\cygwin\home\administrator\python\lib\site-packages\setuptools\command\easy_install.py", line 2312, in main
    **kw
  File "c:\cygwin\home\administrator\python\lib\site-packages\setuptools\__init__.py", line 129, in setup
    return distutils.core.setup(**attrs)
  File "c:\cygwin\home\administrator\python\lib\distutils\core.py", line 151, in setup
    dist.run_commands()
  File "c:\cygwin\home\administrator\python\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "c:\cygwin\home\administrator\python\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "c:\cygwin\home\administrator\python\lib\site-packages\setuptools\command\easy_install.py", line 412, in run
    self.easy_install(spec, not self.no_deps)
  File "c:\cygwin\home\administrator\python\lib\site-packages\setuptools\command\easy_install.py", line 654, in easy_install
    return self.install_item(None, spec, tmpdir, deps, True)
  File "c:\cygwin\home\administrator\python\lib\site-packages\setuptools\command\easy_install.py", line 699, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "c:\cygwin\home\administrator\python\lib\site-packages\setuptools\command\easy_install.py", line 849, in install_eggs
    return [self.install_wheel(dist_filename, tmpdir)]
  File "c:\cygwin\home\administrator\python\lib\site-packages\setuptools\command\easy_install.py", line 1067, in install_wheel
    os.path.dirname(destination)
  File "c:\cygwin\home\administrator\python\lib\distutils\cmd.py", line 349, in execute
    util.execute(func, args, msg, dry_run=self.dry_run)
  File "c:\cygwin\home\administrator\python\lib\distutils\util.py", line 309, in execute
    func(*args)
  File "c:\cygwin\home\administrator\python\lib\site-packages\setuptools\wheel.py", line 90, in install_as_egg
    wheel_metadata = get_metadata('WHEEL')
  File "c:\cygwin\home\administrator\python\lib\site-packages\setuptools\wheel.py", line 87, in get_metadata
    with zf.open('%s/%s' % (dist_info, name)) as fp:
  File "c:\cygwin\home\administrator\python\lib\zipfile.py", line 961, in open
    zinfo = self.getinfo(name)
  File "c:\cygwin\home\administrator\python\lib\zipfile.py", line 909, in getinfo
    'There is no item named %r in the archive' % name)
KeyError: "There is no item named 'logbook-1.3.3.dist-info/WHEEL' in the archive"

The whl file contains a directory called "Logbook-1.3.3.dist-info" (case sensitive).
pip installs the wheel file successfully.

System information: Windows Server 2012 64-bit, Python 2.7.8, setuptools 39.1.0 and "wheel" 0.31.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions