2014-11-01 5 views
6

Ho aggiornato la mia macchina a Yosemite la scorsa settimana. Ora, quando si cerca di eseguire il devserver pellicano ottengo un ImportError:Perché sto ottenendo un python ImportError: nessun modulo chiamato html_parser?

$ ./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 

ottengo lo stesso errore dal REPL quando si cerca di fare un'importazione diretta, ma il modulo è installato:

$ /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 Mi manca qualcosa di ovvio? Che cosa sta succedendo qui?

+0

Potrebbe essere necessario reinstallare il pellicano – jgritty

risposta

4

La libreria utilizza una magia di importazione avanzata. L'importazione di html_parser deve essere eseguita in un modo speciale. from six.moves import html_parser di solito funziona. Se si dispone di codice di terze parti che tenta di importare da sei in un altro modo, è possibile provare a importare six e/o six.moves prima di importare qualcos'altro.

+2

Grazie, lo invierò al team pellicano come bug –

+1

Confermo di avere lo stesso problema su un altro progetto e questo tipo di importazione ha risolto il problema. – sorin

+0

Non sto usando questo html_parser nel mio codice ma quando eseguo un eseguibile binario dal mio codice usando pyinstaller, mi sta chiedendo di importare il file html_parser .. quale potrebbe essere la ragione .. È davvero necessario html_parser nel caso in cui stiamo pianificando per fare binari eseguibili .. Per favore, fai un po 'di luce .. grazie –