2016-10-19 6 views
5

Не знаю. Как исправить это, пожалуйста, помогите, я пробовал все упомянутое в сообщении Error on import matplotlib.pyplot (on Anaconda3 for Windows 10 Home 64-bit PC), но не повезло. Я новичок на питоне, и я сам изучаю конкретные детали, которые будут очень оценены.Ошибка Python (ValueError: _getfullpathname: внедренный нулевой символ)

консоли:

Traceback (most recent call last): 
    from matplotlib import pyplot 
    File "C:\Users\...\lib\site-packages\matplotlib\pyplot.py", line 29, in <module> 
    import matplotlib.colorbar 
    File "C:\Users\...\lib\site-packages\matplotlib\colorbar.py", line 34, in <module> 
    import matplotlib.collections as collections 
    File "C:\Users\...\lib\site-packages\matplotlib\collections.py", line 27, in <module> 
    import matplotlib.backend_bases as backend_bases 
    File "C:\Users\...\lib\site-packages\matplotlib\backend_bases.py", line 62, in <module> 
    import matplotlib.textpath as textpath 
    File "C:\Users\...\lib\site-packages\matplotlib\textpath.py", line 15, in <module> 
    import matplotlib.font_manager as font_manager 
    File "C:\Users\...\lib\site-packages\matplotlib\font_manager.py", line 1421, in <module> 
    _rebuild() 
    File "C:\Users\...\lib\site-packages\matplotlib\font_manager.py", line 1406, in _rebuild 
    fontManager = FontManager() 
    File "C:\Users\...\lib\site-packages\matplotlib\font_manager.py", line 1044, in __init__ 
    self.ttffiles = findSystemFonts(paths) + findSystemFonts() 
    File "C:\Users\...\lib\site-packages\matplotlib\font_manager.py", line 313, in findSystemFonts 
    for f in win32InstalledFonts(fontdir): 
    File "C:\Users\...\lib\site-packages\matplotlib\font_manager.py", line 231, in win32InstalledFonts 
    direc = os.path.abspath(direc).lower() 
    File "C:\Users\...\lib\ntpath.py", line 535, in abspath 
    path = _getfullpathname(path) 
ValueError: _getfullpathname: embedded null character 

Python:

importing libraries 
import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 

#importing dataset 
dataset = pd.read_csv('Position_Salaries.csv') 
x = dataset.iloc[:,1:2].values 
y = dataset.iloc[:,2].values 

#Linear Regression 
from sklearn.linear_model import LinearRegression 
reg_lin = LinearRegression() 
reg_lin = reg_lin.fit(x,y) 

#ploynomial Linear Regression 
from sklearn.preprocessing import PolynomialFeatures 
reg_poly = PolynomialFeatures(degree = 3) 
x_poly = reg_poly.fit_transform(x) 
reg_poly.fit(x_poly,y) 
lin_reg_2 = LinearRegression() 
lin_reg_2.fit(x_poly,y) 

#Visualizing Linear Regression results 
plt.scatter(x,y,color = 'red') 
plt.plot(x,reg_lin.predict(x), color = 'blue') 
plt.title('Truth vs. Bluff (Linear Reg)') 
plt.xlabel('Position level') 
plt.ylabel('Salary') 
plt.show() 

#Visualizing Polynomial Regression results 
plt.scatter(x,y,color = 'red') 
plt.plot(x,lin_reg_2.predict(reg_poly.fit_transform(x)), color = 'blue') 
plt.title('Truth vs. Bluff (Linear Reg)') 
plt.xlabel('Position level') 
plt.ylabel('Salary') 
plt.show() 
+1

Просто заметьте, он работает на Python 2. Я добавил полный ответ на ваш пост из 'import matplotlib.pyplot as plt' – KeyWeeUsr

+1

Вы уже связали (http://stackoverflow.com/q/34004063/3581217) с что, по-видимому, является решением этой проблемы; есть ли у вас такая же ошибка с упомянутым исправлением? – Bart

+1

@KeyWeeUsr Я удалил щедрость. Не стесняйтесь добавлять его на другой столбец, если хотите. –

ответ

0

Я не думаю, что вы применили патч в Error on import matplotlib.pyplot (on Anaconda3 for Windows 10 Home 64-bit PC) правильно: если у вас, не должно быть упоминание о direc = os.path.abspath(direc).lower() в вашем стек ошибок, так как патч удалил его.

Чтобы было ясно, вот весь win32InstalledFonts() метод C:\Anaconda\envs\py35\Lib\site-packages\matplotlib\font_manager.py (или там, где установлен Anaconda) после того, как патч применяется с Matplotlib 2.0.0:

def win32InstalledFonts(directory=None, fontext='ttf'): 
    """ 
    Search for fonts in the specified font directory, or use the 
    system directories if none given. A list of TrueType font 
    filenames are returned by default, or AFM fonts if *fontext* == 
    'afm'. 
    """ 

    from six.moves import winreg 
    if directory is None: 
     directory = win32FontDirectory() 

    fontext = get_fontext_synonyms(fontext) 

    key, items = None, {} 
    for fontdir in MSFontDirectories: 
     try: 
      local = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, fontdir) 
     except OSError: 
      continue 

     if not local: 
      return list_fonts(directory, fontext) 
     try: 
      for j in range(winreg.QueryInfoKey(local)[1]): 
       try: 
        ''' Patch fixing [Error on import matplotlib.pyplot (on Anaconda3 for Windows 10 Home 64-bit PC)](https://stackoverflow.com/a/34007642/395857) 
        key, direc, any = winreg.EnumValue(local, j) 
        if not is_string_like(direc): 
         continue 
        if not os.path.dirname(direc): 
         direc = os.path.join(directory, direc) 
        direc = os.path.abspath(direc).lower() 
        ''' 
        key, direc, any = winreg.EnumValue(local, j) 
        if not is_string_like(direc): 
         continue 
        if not os.path.dirname(direc): 
         direc = os.path.join(directory, direc) 
        direc = direc.split('\0', 1)[0] 


        if os.path.splitext(direc)[1][1:] in fontext: 
         items[direc] = 1 
       except EnvironmentError: 
        continue 
       except WindowsError: 
        continue 
       except MemoryError: 
        continue 
      return list(six.iterkeys(items)) 
     finally: 
      winreg.CloseKey(local) 
    return None 
2

Чтобы найти это в font_manager ру:

direc = os.path.abspath(direc).lower() 

изменить его на:

direc = direc.split('\0', 1)[0] 

и сохранить для применения в вашем файле.

0

Актуальная причина проблемы: os.path.abspath(). Лучшее решение может быть редактировать <python dir>\Lib\ntpaths.py, как описано в Error on import matplotlib.pyplot (on Anaconda3 for Windows 10 Home 64-bit PC)

В принципе, добавить обработчик в ValueError: исключение версии Windows, функции abspath(). Это ниже в стеке вызовов и может спасти вас от столкновения с этой проблемой в других местах.

Смежные вопросы