Issue #22314: pydoc now works when the LINES environment variable is set.
diff --git a/Lib/pydoc.py b/Lib/pydoc.py
index 11451e8..60b0a9e5 100755
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -1477,12 +1477,18 @@
         old = tty.tcgetattr(fd)
         tty.setcbreak(fd)
         getchar = lambda: sys.stdin.read(1)
-    except (ImportError, AttributeError):
+    except (ImportError, AttributeError, io.UnsupportedOperation):
         tty = None
         getchar = lambda: sys.stdin.readline()[:-1][:1]
 
     try:
-        r = inc = os.environ.get('LINES', 25) - 1
+        try:
+            h = int(os.environ.get('LINES', 0))
+        except ValueError:
+            h = 0
+        if h <= 1:
+            h = 25
+        r = inc = h - 1
         sys.stdout.write('\n'.join(lines[:inc]) + '\n')
         while lines[r:]:
             sys.stdout.write('-- more --')
diff --git a/Misc/NEWS b/Misc/NEWS
index 2a5d043..b3d92b2 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -383,6 +383,11 @@
 - Issue #17442: InteractiveInterpreter now displays the full chained traceback
   in its showtraceback method, to match the built in interactive interpreter.
 
+Tools/Demos
+-----------
+
+- Issue #22314: pydoc now works when the LINES environment variable is set.
+
 - Issue #10510: distutils register and upload methods now use HTML standards
   compliant CRLF line endings.