При попытке импортировать Matplotlib.pyplot, получите "UnicodeDecodeError"
При попытке запустить скрипт Python, начинающийся с
import numpy as np
import matplotlib.pyplot as plt
Я получаю следующее сообщение об ошибке:
/usr/lib/python2.7/dist-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')
Traceback (most recent call last):
File "/home/kurt/Documents/Python/tax_rates.py", line 2, in <module>
import matplotlib.pyplot as plt
File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 29, in <module>
import matplotlib.colorbar
File "/usr/lib/python2.7/dist-packages/matplotlib/colorbar.py", line 34, in <module>
import matplotlib.collections as collections
File "/usr/lib/python2.7/dist-packages/matplotlib/collections.py", line 27, in <module>
import matplotlib.backend_bases as backend_bases
File "/usr/lib/python2.7/dist-packages/matplotlib/backend_bases.py", line 62, in <module>
import matplotlib.textpath as textpath
File "/usr/lib/python2.7/dist-packages/matplotlib/textpath.py", line 15, in <module>
import matplotlib.font_manager as font_manager
File "/usr/lib/python2.7/dist-packages/matplotlib/font_manager.py", line 1421, in <module>
_rebuild()
File "/usr/lib/python2.7/dist-packages/matplotlib/font_manager.py", line 1406, in _rebuild
fontManager = FontManager()
File "/usr/lib/python2.7/dist-packages/matplotlib/font_manager.py", line 1044, in __init__
self.ttffiles = findSystemFonts(paths) + findSystemFonts()
File "/usr/lib/python2.7/dist-packages/matplotlib/font_manager.py", line 324, in findSystemFonts
for f in get_fontconfig_fonts(fontext):
File "/usr/lib/python2.7/dist-packages/matplotlib/font_manager.py", line 276, in get_fontconfig_fonts
stderr=subprocess.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1340, in _execute_child
raise child_exception
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)
Я попытался переустановить Python и Matplotlib с помощью команд
sudo apt-get --reinstall install python
sudo apt-get --reinstall install python-matplotlib
но безрезультатно. Как я могу заставить Pyplot импортировать правильно?
1 ответ
Решение
Спасибо за ваши комментарии. Я попробовал предложение Джоса добавить следующие строки в начало tax_rates.py
:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
Я был рад видеть, что скрипт теперь запускается и создает сюжет (см. Скриншот ниже из редактора Atom).
Я бы приветствовал более "постоянное" решение.
PS Для справки весь tax_rates.py
Сценарий скопирован ниже.
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import numpy as np
import matplotlib.pyplot as plt
# income = np.linspace(0,2e6,2001)
thresholds = np.array([0, 9725, 37650, 190150, 413350, 415050])
print(thresholds)
plt.figure()
plt.plot(thresholds,thresholds)
plt.show()