Skip to content

UnicodeDecodeError since 18.7 when determining version from file with LC_ALL=C #469

@ghost

Description

Originally reported by: The-Compiler (Bitbucket: The-Compiler, GitHub: The-Compiler)


When an user has LC_ALL=C set (which unfortunately happens more often than I'd like), starting a setuptools script seems to fail:

$ LC_ALL=C /usr/bin/qutebrowser
Traceback (most recent call last):
  File "/usr/bin/qutebrowser", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 3143, in <module>
    @_call_aside
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 3129, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 3156, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 649, in _build_master
    ws = cls()
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 642, in __init__
    self.add_entry(entry)
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 698, in add_entry
    for dist in find_distributions(entry, True):
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2136, in find_on_path
    path_item, entry, metadata, precedence=DEVELOP_DIST
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2518, in from_location
    version = cls._version_from_metadata(dist_path) or version
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2841, in _version_from_metadata
    return _version_from_file(strm)
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2483, in _version_from_file
    line = next(iter(version_lines), '')
  File "/usr/lib/python3.5/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 159: ordinal not in range(128)

This seems due to some other packages using non-ASCII chars in their long_descriptions, and pkg_resources trying to read PKG_INFO with the system encoding to find out the version.


Metadata

Metadata

Assignees

No one assigned
    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