mitsuhiko / pipsi

pip script installer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

UnicodeDecodeError when installing packages with non-ASCII filenames

andreparames opened this issue · comments

$ pipsi install mr.bob
Running virtualenv with interpreter /home/app/.local/venvs/pipsi/bin/python2
Using real prefix '/usr'
New python executable in /home/app/.local/venvs/mr.bob/bin/python2
Also creating executable in /home/app/.local/venvs/mr.bob/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
Collecting mr.bob
Collecting Jinja2>=2.5.0 (from mr.bob)
  Using cached Jinja2-2.10-py2.py3-none-any.whl
Collecting six>=1.2.0 (from mr.bob)
  Using cached six-1.11.0-py2.py3-none-any.whl
Requirement already satisfied: setuptools in ./.local/venvs/mr.bob/lib/python2.7/site-packages (from mr.bob)
Collecting MarkupSafe>=0.23 (from Jinja2>=2.5.0->mr.bob)
Installing collected packages: MarkupSafe, Jinja2, six, mr.bob
Successfully installed Jinja2-2.10 MarkupSafe-1.0 mr.bob-0.1.2 six-1.11.0
Traceback (most recent call last):
  File "/home/app/.local/bin/pipsi", line 11, in <module>
    sys.exit(cli())
  File "/home/app/.local/venvs/pipsi/local/lib/python2.7/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/app/.local/venvs/pipsi/local/lib/python2.7/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/app/.local/venvs/pipsi/local/lib/python2.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/app/.local/venvs/pipsi/local/lib/python2.7/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/app/.local/venvs/pipsi/local/lib/python2.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/app/.local/venvs/pipsi/local/lib/python2.7/site-packages/click/decorators.py", line 27, in new_func
    return f(get_current_context().obj, *args, **kwargs)
  File "/home/app/.local/venvs/pipsi/local/lib/python2.7/site-packages/pipsi.py", line 366, in install
    if repo.install(package, python, editable):
  File "/home/app/.local/venvs/pipsi/local/lib/python2.7/site-packages/pipsi.py", line 252, in install
    scripts = find_scripts(venv_path, package)
  File "/home/app/.local/venvs/pipsi/local/lib/python2.7/site-packages/pipsi.py", line 121, in find_scripts
    files,
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position 89: ordinal not in range(128)

The problem is that mr.bob includes a couple of files with strange names:

'mrbob/tests/templates/encodingc\xcc\x8c/mapc\xcc\x8ca/c\xcc\x81a.bob'
'mrbob/tests/templates/encoding\xc4\x8d/map\xc4\x8da/\xc4\x87a.bob'

Decoding the filename from UTF-8 in find_scripts() works on my computer:

    files = [fname for fname in files
             if fname.decode('utf-8').startswith(prefix)]

When I have time, I'll try to write a PR that handles other platforms as well.