\documentclass[tikz,border=5pt]{standalone}
\usepackage{pgfplots}
\makeatletter\newif\ifpgfplots@scaled@x@ticks@engineering\pgfplots@scaled@x@ticks@engineeringfalse\newif\ifpgfplots@scaled@y@ticks@engineering\pgfplots@scaled@y@ticks@engineeringfalse\newif\ifpgfplots@scaled@z@ticks@engineering\pgfplots@scaled@z@ticks@engineeringfalse\pgfplotsset{scaled x ticks/engineering/.code=\pgfplots@scaled@x@ticks@engineeringtrue,scaled y ticks/engineering/.code=\pgfplots@scaled@y@ticks@engineeringtrue,scaled z ticks/engineering/.code=\pgfplots@scaled@y@ticks@engineeringtrue,}
\def\pgfplots@init@scaled@tick@for#1{\global\def\pgfplots@glob@TMPa{0}\expandafter\pgfplotslistcheckempty\csname pgfplots@prepared@tick@positions@major@#1\endcsname\ifpgfplotslistempty\else\begingroup\ifcase\csname pgfplots@scaled@ticks@#1@choice\endcsname\relax\or\expandafter\let\expandafter\pgfplots@cur@min@unscaled\csname pgfplots@#1min@unscaled@as@float\endcsname\expandafter\let\expandafter\pgfplots@cur@max@unscaled\csname pgfplots@#1max@unscaled@as@float\endcsname\ifx\pgfplots@cur@min@unscaled\pgfutil@empty\edef\pgfplots@loc@TMPa{\csname pgfplots@#1min\endcsname}\expandafter\pgfmathfloatparsenumber\expandafter{\pgfplots@loc@TMPa}\let\pgfplots@cur@min@unscaled=\pgfmathresult\edef\pgfplots@loc@TMPa{\csname pgfplots@#1max\endcsname}\expandafter\pgfmathfloatparsenumber\expandafter{\pgfplots@loc@TMPa}\let\pgfplots@cur@max@unscaled=\pgfmathresult\fi\expandafter\pgfmathfloat@decompose@E\pgfplots@cur@min@unscaled\relax\pgfmathfloat@a@E\expandafter\pgfmathfloat@decompose@E\pgfplots@cur@max@unscaled\relax\pgfmathfloat@b@E\pgfplots@init@scaled@tick@normalize@exponents\ifnum\pgfmathfloat@b@E<\pgfmathfloat@a@E\pgfmathfloat@b@E=\pgfmathfloat@a@E\fi\xdef\pgfplots@glob@TMPa{\pgfplots@scale@ticks@above@exponent}\ifnum\pgfplots@glob@TMPa<\pgfmathfloat@b@E\expandafter\ifx\csname ifpgfplots@scaled@#1@ticks@engineering\expandafter\endcsname\csname iftrue\endcsname\divide\pgfmathfloat@b@E by 3 \multiply\pgfmathfloat@b@E by 3 \fi\multiply\pgfmathfloat@b@E by-1 \xdef\pgfplots@glob@TMPa{\the\pgfmathfloat@b@E}\else\xdef\pgfplots@glob@TMPa{\pgfplots@scale@ticks@below@exponent}\ifnum\pgfplots@glob@TMPa>\pgfmathfloat@b@E\expandafter\ifx\csname ifpgfplots@scaled@#1@ticks@engineering\expandafter\endcsname\csname iftrue\endcsname\advance\pgfmathfloat@b@E by -2 \divide\pgfmathfloat@b@E by 3 \multiply\pgfmathfloat@b@E by 3 \fi\multiply\pgfmathfloat@b@E by-1 \xdef\pgfplots@glob@TMPa{\the\pgfmathfloat@b@E}\else\xdef\pgfplots@glob@TMPa{0}\fi\fi\or\c@pgf@counta=\csname pgfplots@scaled@ticks@#1@arg\endcsname\relax\xdef\pgfplots@glob@TMPa{\the\c@pgf@counta}\or\pgfmathfloatparsenumber{\csname pgfplots@scaled@ticks@#1@arg\endcsname}\global\let\pgfplots@glob@TMPa=\pgfmathresult\or\expandafter\global\expandafter\let\expandafter\pgfplots@glob@TMPa\csname pgfplots@scaled@ticks@#1@arg\endcsname\fi\endgroup\fi\expandafter\let\csname pgfplots@tick@scale@#1\endcsname=\pgfplots@glob@TMPa}\long\def\ifnodedefined#1#2#3{\@ifundefined{pgf@sh@ns@#1}
{#3}{#2}}\pgfplotsset{y unit label/.style={y tick scale label style={name=y tick scale label,inner xsep=0pt}
,after end axis/.append code={\ifnodedefined{y tick scale label}{\tikzset{every y unit label/.append style={anchor=base west,at=(y tick scale label.base east)}
}}{\tikzset{every y unit label/.append style={/pgfplots/every y tick scale label}
}}\node[every y unit label]{#1};
}}}\makeatother\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
\begin{axis}[scaled ticks=engineering,y unit label=m,height=4cm]\addplot [domain=0:1] {10*\x};
\end{axis}
\end{tikzpicture}
\end{document}