2014-10-03 3 views
2

Я принимаю курс YouTube о том, как создавать графики для обновления в реальном времени на python. Первоначально моя программа не запускалась, потому что мне не хватало важных модулей, таких как six или dateutil (я даже установил pyparsing и pitz, чтобы избежать дальнейших неудач). Но теперь, каждый раз, когда я запускаю его я получаю это:UnicodeDecodeError Matplotlib

Traceback (most recent call last): 
    File "C:\Users\Jó\Desktop\Live-updating Graphs (YTBCourse).py", line 1, in <module> 
    import matplotlib as plt 
    File "C:\Python27\lib\site-packages\matplotlib\__init__.py", line 1048, in <module> 
    rcParams = rc_params() 
    File "C:\Python27\lib\site-packages\matplotlib\__init__.py", line 897, in rc_params 
    fname = matplotlib_fname() 
    File "C:\Python27\lib\site-packages\matplotlib\__init__.py", line 748, in matplotlib_fname 
    fname = os.path.join(os.getcwd(), 'matplotlibrc') 
    File "C:\Python27\lib\ntpath.py", line 108, in join 
    path += "\\" + b 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xf3 in position 10: ordinal not in range(128) 

Вы можете увидеть/пометить этот вопрос как дубликат, но я не нашел ответ на этот вопрос в разделе «Подобные вопросы». Я действительно не знаю, как это происходит. Можете ли вы помочь мне разобраться в этом? Заранее спасибо!

+0

Это выглядит ошибкой в ​​'matplotlib'. Он смешивает Unicode и байты. Он должен использовать имена файлов Unicode для Windows i.e., 'os.getcwdu()'. Попробуйте Python 3, который более строг в отношении смешивания Unicode и байтов (и, следовательно, ошибка проявится даже на чистых именах ascii). – jfs

+0

Я думаю, что это исправлено 1.4.x и мастер. – tacaswell

+0

см. Https://github.com/matplotlib/matplotlib/pull/3487 – tacaswell

ответ

0

Я вижу, что каталог вы используете содержит специальный символ ó

Самый простой способ, чтобы переименовать директорию. Что-то до C:\Users\Jo\Desktop вместо C:\Users\Jó\Desktop. Или сохраните файлы Python в другом месте.

Как вы можете видеть из ошибки, os.getcwd() получает текущий каталог и добавляет к нему путь. Теперь здесь, в пути к каталогу, у вас есть специальные символы, которые не поняты кодировкой исходного кода ASCII по умолчанию интерпретатора.

+0

Можно ли переименовать каталог пользователя, не затрагивая все остальные программные средства компьютера? – clemtoy

0

Проблема - ваше имя пользователя, оно содержит символ не-ascii.

У моей подруги была такая же проблема, потому что его имя пользователя было «römer».

Благодарим Microsoft за почти несуществующую поддержку юникода.