Why am I getting python ImportError: No module named html_parser?

I upgraded my car to Yosemite last week. Now, trying to start the pelican detective, I get ImportError:

$ ./develop_server.sh start Starting up Pelican and HTTP server Traceback (most recent call last): File "/usr/local/bin/pelican", line 7, in <module> from pelican import main File "/Library/Python/2.7/site-packages/pelican/__init__.py", line 20, in <module> from pelican.generators import (ArticlesGenerator, PagesGenerator, File "/Library/Python/2.7/site-packages/pelican/generators.py", line 23, in <module> from pelican.readers import Readers File "/Library/Python/2.7/site-packages/pelican/readers.py", line 24, in <module> from six.moves.html_parser import HTMLParser ImportError: No module named html_parser /usr/bin/python: No module named html_parser Pelican didn't start. Is the Pelican package installed? Stale PID, deleting Stale PID, deleting 

I get the same error from REPL when trying to import directly, but the module is installed:

 $ /usr/bin/python Python 2.7.6 (default, Sep 9 2014, 15:04:36) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import KeyboardInterrupt >>> from six.moves.html_parser import HTMLParser Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named html_parser >>> import six >>> six.moves.html_parser <module 'HTMLParser' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/HTMLParser.pyc'> >>> six.moves.html_parser.HTMLParser <class HTMLParser.HTMLParser at 0x10b751530> >>> 

Am I missing something obvious? What's going on here?

+6
source share
2 answers

Six libraries use some advanced import magic. The html_parser import must be done in a special way. from six.moves import html_parser usually works. If you have third-party code that is trying to import from six, you can try importing six and / or six.moves first before importing anything else.

+4
source

Worked for me:

 from six.moves import html_parser html = html_parser.HTMLParser() html.unescape(myString) 

This guaranteed compatibility with Python2.

0
source

Source: https://habr.com/ru/post/977588/


All Articles