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.