Repository: spyder-ide/spyder

Issue:
Make Spyder display a clear/user-friendly error when used with a too-old Spyder-Kernels version
## Description

### What steps will reproduce the problem?

<!--- You can use Markdown here --->

When I updated to Spyder 4.0 rc2, I updated Spyder-Kernels to 1.8.0 (which doesn't actually appear to be a release on Github, just on the Spyder-IDE conda channel--@ccordoba12 did the release tag not get pushed to upstream?) for both my Spyder env and my main working envs. However, I had happened to have a different env selected where I hadn't updated Spyder-Kernels, so I got the following error on launching Spyder (kernels in up to date environments appear to work fine), and it probably wouldn't have been clear to me what to do about it if I'd been a regular user. Since a user may be switching between multiple envs and might not realize they haven't updated Spyder-Kernels in all of them, it would be good to have a user friendly error message when detecting an out of date Spyder version so users know to update it instead of wasting the Spyder team's time with Github issues or other support requests. Thanks.

### Traceback
```python-traceback
Exception in comms call update_syspath:
  File "C:\Miniconda3\envs\glml\lib\site-packages\spyder_kernels\comms\commbase.py", line 339, in _handle_remote_call
    buffer['call_kwargs'])
  File "C:\Miniconda3\envs\glml\lib\site-packages\spyder_kernels\comms\commbase.py", line 352, in _remote_callback
    raise CommError("No such spyder call type: %s" % call_name)
spyder_kernels.comms.commbase.CommError: No such spyder call type: update_syspath
```

## Versions

* Spyder version: 4.0.0rc2 
* Python version: 3.7.5
* Qt version: 5.9.6
* PyQt5 version: 5.9.2
* Operating System: Windows 8.1

### Dependencies

```
cloudpickle >=0.5.0          :  0.7.0 (OK)
pygments >=2.0               :  2.3.1 (OK)
qtconsole >=4.6.0            :  4.6.0 (OK)
nbconvert >=4.0              :  5.4.0 (OK)
sphinx >=0.6.6               :  1.8.4 (OK)
pylint >=0.25                :  2.2.2 (OK)
psutil >=0.3                 :  5.6.3 (OK)
qtawesome >=0.5.7            :  0.6.0 (OK)
qtpy >=1.5.0                 :  1.9.0 (OK)
pickleshare >=0.4            :  0.7.5 (OK)
zmq >=17                     :  17.1.2 (OK)
chardet >=2.0.0              :  3.0.4 (OK)
numpydoc >=0.6.0             :  0.8.0 (OK)
spyder_kernels >=1.8.0;<2.0.0:  1.8.0 (OK)
qdarkstyle >=2.7             :  2.7 (OK)
atomicwrites >=1.2.0         :  1.3.0 (OK)
diff_match_patch >=20181111  :  20181111 (OK)
watchdog                     :  None (OK)
keyring                      :  None (OK)
pexpect >=4.4.0              :  4.7.0 (OK)
pympler                      :  None (OK)
sympy >=0.7.3                :  1.3 (OK)
cython >=0.21                :  0.29.4 (OK)
IPython >=4.0                :  7.2.0 (OK)
matplotlib >=2.0.0           :  3.0.2 (OK)
pandas >=0.13.1              :  0.24.2 (OK)
numpy >=1.7                  :  1.15.4 (OK)
scipy >=0.17.0               :  1.2.0 (OK)
pyls >=0.31.0;<0.32.0        :  0.31.0 (OK)
rtree >=0.8.3                :  0.8.3 (OK)
```



Discussion:

Resolving patch:
diff --git a/spyder/plugins/ipythonconsole/plugin.py b/spyder/plugins/ipythonconsole/plugin.py
--- a/spyder/plugins/ipythonconsole/plugin.py
+++ b/spyder/plugins/ipythonconsole/plugin.py
@@ -646,21 +646,22 @@ def create_new_client(self, give_focus=True, filename='', is_cython=False,
         if not CONF.get('main_interpreter', 'default'):
             pyexec = CONF.get('main_interpreter', 'executable')
             has_spyder_kernels = programs.is_module_installed(
-                                                        'spyder_kernels',
-                                                        interpreter=pyexec,
-                                                        version='>=1.0.0')
+                'spyder_kernels',
+                interpreter=pyexec,
+                version='>=1.8.0;<2.0.0')
             if not has_spyder_kernels:
                 client.show_kernel_error(
-                        _("Your Python environment or installation doesn't "
-                          "have the <tt>spyder-kernels</tt> module or the "
-                          "right version of it installed. "
-                          "Without this module is not possible for "
-                          "Spyder to create a console for you.<br><br>"
-                          "You can install it by running in a system terminal:"
-                          "<br><br>"
-                          "<tt>conda install spyder-kernels</tt>"
-                          "<br><br>or<br><br>"
-                          "<tt>pip install spyder-kernels</tt>"))
+                    _("Your Python environment or installation doesn't have "
+                      "the <tt>spyder-kernels</tt> module or the right "
+                      "version of it installed (>= 1.8.0 and < 2.0.0). "
+                      "Without this module is not possible for Spyder to "
+                      "create a console for you.<br><br>"
+                      "You can install it by running in a system terminal:"
+                      "<br><br>"
+                      "<tt>conda install spyder-kernels</tt>"
+                      "<br><br>or<br><br>"
+                      "<tt>pip install spyder-kernels</tt>")
+                )
                 return
 
         self.connect_client_to_kernel(client, is_cython=is_cython,


Test patch: