Cookiecutter: UnicodeDecodeError after follow your-first-cookiecutter instructions

Created on 1 Jul 2016  路  6Comments  路  Source: cookiecutter/cookiecutter

  • Cookiecutter version: 1.4.0
  • Template project url: -
  • Python version: 2.7.12 and 3.5.2
  • Operating System: OS X

    Description:

I was follow: https://cookiecutter.readthedocs.io/en/latest/first_steps.html#your-first-cookiecutter
A new directory created successfully but it produces errors like below. I think maybe it's about Python version?
I tried it on Python 2.7.6. It works fine.

What I've run:

Python2

$ cookiecutter HelloCookieCutter1
directory_name [Hello]:
file_name [Howdy]:
greeting_recipient [Julie]:
Traceback (most recent call last):
  File "/Users/mrteera/.virtualenvs/automate_micro/bin/cookiecutter", line 11, in <module>
    sys.exit(main())
  File "/Users/mrteera/.virtualenvs/automate_micro/lib/python2.7/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/Users/mrteera/.virtualenvs/automate_micro/lib/python2.7/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/Users/mrteera/.virtualenvs/automate_micro/lib/python2.7/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/mrteera/.virtualenvs/automate_micro/lib/python2.7/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/Users/mrteera/.virtualenvs/automate_micro/lib/python2.7/site-packages/cookiecutter/cli.py", line 106, in main
    config_file=user_config
  File "/Users/mrteera/.virtualenvs/automate_micro/lib/python2.7/site-packages/cookiecutter/main.py", line 144, in cookiecutter
    output_dir=output_dir
  File "/Users/mrteera/.virtualenvs/automate_micro/lib/python2.7/site-packages/cookiecutter/generate.py", line 350, in generate_files
    generate_file(project_dir, infile, context, env)
  File "/Users/mrteera/.virtualenvs/automate_micro/lib/python2.7/site-packages/cookiecutter/generate.py", line 168, in generate_file
    tmpl = env.get_template(infile_fwd_slashes)
  File "/Users/mrteera/.virtualenvs/automate_micro/lib/python2.7/site-packages/jinja2/environment.py", line 812, in get_template
    return self._load_template(name, self.make_globals(globals))
  File "/Users/mrteera/.virtualenvs/automate_micro/lib/python2.7/site-packages/jinja2/environment.py", line 774, in _load_template
    cache_key = self.loader.get_source(self, name)[1]
  File "/Users/mrteera/.virtualenvs/automate_micro/lib/python2.7/site-packages/jinja2/loaders.py", line 175, in get_source
    contents = f.read().decode(self.encoding)
  File "/Users/mrteera/.virtualenvs/automate_micro/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 0: invalid start byte

Python3

cookiecutter HelloCookieCutter1
directory_name [Hello]:
file_name [Howdy]:
greeting_recipient [Julie]:
Traceback (most recent call last):
  File "/usr/local/bin/cookiecutter", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.5/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.5/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.5/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.5/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.5/site-packages/cookiecutter/cli.py", line 106, in main
    config_file=user_config
  File "/usr/local/lib/python3.5/site-packages/cookiecutter/main.py", line 144, in cookiecutter
    output_dir=output_dir
  File "/usr/local/lib/python3.5/site-packages/cookiecutter/generate.py", line 350, in generate_files
    generate_file(project_dir, infile, context, env)
  File "/usr/local/lib/python3.5/site-packages/cookiecutter/generate.py", line 168, in generate_file
    tmpl = env.get_template(infile_fwd_slashes)
  File "/usr/local/lib/python3.5/site-packages/jinja2/environment.py", line 812, in get_template
    return self._load_template(name, self.make_globals(globals))
  File "/usr/local/lib/python3.5/site-packages/jinja2/environment.py", line 774, in _load_template
    cache_key = self.loader.get_source(self, name)[1]
  File "/usr/local/lib/python3.5/site-packages/jinja2/loaders.py", line 175, in get_source
    contents = f.read().decode(self.encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
$ python Hello/Howdy.py
Hello, Julie!
please-help

Most helpful comment

I have the same problem again, but I found that it's not related to Cookiecutter.
I just want to put the solution here in case someone also found this problem.
The problem is in your directory, there are files contain non-UTF-8, so what I did is remove all those files that contain non-UTF-8 characters.

find . -type f | xargs -I {} bash -c "iconv -f utf-8 -t utf-16 {} &>/dev/null || echo {}" > utf8_fail

Credit: https://gist.github.com/rmetzler/2947828

All 6 comments

I experienced the same problem on python2.7.11, do we have any office way to get around this issue currently? or when you guys can look into this issues?

much appreciated.
Cheers,
Tony

Hi @mrteera and @tonytvo,
Thanks for the issue report.
It looks like the {{cookiecutter.directory_name}}/{{cookiecutter.file_name}}.py file you've created cannot be decoded as utf-8.
Can you check your editor settings?

馃敂

@michaeljoseph I use vim on mac. I've already changed my laptop so I can't remember what plugins I've installed.

Now I'm using a new laptop and similar vim plugins. Python 2.7.12, Cookiecutter 1.4.0. it works beautifully. So I can't reproduce this error anymore.

I'm going to mark this closed. If this is reproduced, please reopen it.

I have the same problem again, but I found that it's not related to Cookiecutter.
I just want to put the solution here in case someone also found this problem.
The problem is in your directory, there are files contain non-UTF-8, so what I did is remove all those files that contain non-UTF-8 characters.

find . -type f | xargs -I {} bash -c "iconv -f utf-8 -t utf-16 {} &>/dev/null || echo {}" > utf8_fail

Credit: https://gist.github.com/rmetzler/2947828

Was this page helpful?
0 / 5 - 0 ratings