pydoc3.5 borks on my Mac
Skip Montanaro
skip.montanaro at gmail.com
Sun Feb 1 11:24:03 EST 2015
I build several versions of Python from Mercurial sources on a regular
basis. I am starting on a new collection of programs for some database
work and figured I should start using Python 3. I wanted to look
something up quickly about the sqlite3 module, so I tried "pydoc
sqlite3". That worked fine, but I figured it was probably using Python
2.x. In fact, it was using Python 2.6. So, I found all my pydoc-ish
commands:
% like pydoc
/Users/skip/local/bin/pydoc
/Users/skip/local/bin/pydoc3
/Users/skip/local/bin/pydoc3.2
/Users/skip/local/bin/pydoc3.3
/Users/skip/local/bin/pydoc3.4
/Users/skip/local/bin/pydoc3.5
/usr/bin/pydoc
/usr/bin/pydoc2.6
/usr/bin/pydoc2.7
/usr/local/bin/pydoc3
/usr/local/bin/pydoc3.4
and tried pydoc3.5. That didn't work so well:
% pydoc3.5 sqlite3
Traceback (most recent call last):
File "/Users/skip/local/bin/pydoc3.5", line 5, in <module>
pydoc.cli()
File "/Users/skip/local/lib/python3.5/pydoc.py", line 2591, in cli
help.help(arg)
File "/Users/skip/local/lib/python3.5/pydoc.py", line 1874, in help
elif request: doc(request, 'Help on %s:', output=self._output)
File "/Users/skip/local/lib/python3.5/pydoc.py", line 1612, in doc
pager(render_doc(thing, title, forceload))
File "/Users/skip/local/lib/python3.5/pydoc.py", line 1412, in pager
pager(text)
File "/Users/skip/local/lib/python3.5/pydoc.py", line 1434, in <lambda>
return lambda text: pipepager(text, 'less')
File "/Users/skip/local/lib/python3.5/pydoc.py", line 1455, in pipepager
pipe.write(text)
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in
position 600: ordinal not in range(128)
I don't have PAGER or LANG set, but if I do, I get basically the same error:
% LANG=en_US.utf8 PAGER=less pydoc3.5 sqlite3
Traceback (most recent call last):
File "/Users/skip/local/bin/pydoc3.5", line 5, in <module>
pydoc.cli()
File "/Users/skip/local/lib/python3.5/pydoc.py", line 2591, in cli
help.help(arg)
File "/Users/skip/local/lib/python3.5/pydoc.py", line 1874, in help
elif request: doc(request, 'Help on %s:', output=self._output)
File "/Users/skip/local/lib/python3.5/pydoc.py", line 1612, in doc
pager(render_doc(thing, title, forceload))
File "/Users/skip/local/lib/python3.5/pydoc.py", line 1412, in pager
pager(text)
File "/Users/skip/local/lib/python3.5/pydoc.py", line 1428, in <lambda>
return lambda text: pipepager(text, os.environ['PAGER'])
File "/Users/skip/local/lib/python3.5/pydoc.py", line 1455, in pipepager
pipe.write(text)
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in
position 600: ordinal not in range(128)
I get the same thing from a python3.5 prompt using "import sqlite3 ;
help(sqlite3)". Not having any idea what was in position 600, I tried
getting help for each element in dir(sqlite3). That failed as well,
though it appeared for some strange reason to crap out on
help(sqlite3.dbapi2.__name__).
Any idea how I can track down this character so I can report a proper bug?
Thx,
Skip
More information about the Python-list
mailing list