Issue 12087: install_egg_info fails with UnicodeEncodeError depending on locale (original) (raw)

With issue 10419 fixed, I've run into the next distutils unicode bug: The command "install_egg_info" doesn't specify an encoding when opening the ".egg-info" file for writing. Depending on the locale, this may result in something like the following:

$ python setup.py install [...] Traceback (most recent call last): File "setup.py", line 67, in main() File "setup.py", line 62, in main cmdclass={"test":TestCommand}, File "/home/hagen/src/python/Lib/distutils/core.py", line 149, in setup dist.run_commands() File "/home/hagen/src/python/Lib/distutils/dist.py", line 919, in run_commands self.run_command(cmd) File "/home/hagen/src/python/Lib/distutils/dist.py", line 938, in run_command cmd_obj.run() File "/home/hagen/src/python/Lib/distutils/command/install.py", line 583, in run self.run_command(cmd_name) File "/home/hagen/src/python/Lib/distutils/cmd.py", line 315, in run_command self.distribution.run_command(command) File "/home/hagen/src/python/Lib/distutils/dist.py", line 938, in run_command cmd_obj.run() File "/home/hagen/src/python/Lib/distutils/command/install_egg_info.py", line 44, in run self.distribution.metadata.write_pkg_file(f) File "/home/hagen/src/python/Lib/distutils/dist.py", line 1033, in write_pkg_file file.write('Author: %s\n' % self.get_contact() ) UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 15: ordinal not in range(128)

I guess some encoding (UTF-8?) should be specified in the "run" method of "install_egg_info".

The pkg_resources module in setuptools or distribute reads those files.

In 3.3, packaging.database reads them too (it’s an implementation of PEP 376 with b/w compat with egg-info). It may work just fine in 3.x (it uses text I/O), but when we backport packaging to distutils2 for 2.4+, we’ll probably run into the problem again.