Repository: spyder-ide/spyder

Issue:
ImportError when trying to display QMessageBox about corrupted configuration files
An error ocurred while starting the kernel
The error is:

Traceback (most recent call last):
File "C:\Anaconda\lib\site‑packages\spyder\plugins\ipythonconsole\plugin.py", line 1568, in create_kernel_manager_and_kernel_client
kernel_manager.start_kernel(stderr=stderr_handle,
File "C:\Anaconda\lib\site‑packages\jupyter_client\manager.py", line 341, in start_kernel
self.kernel = self._launch_kernel(kernel_cmd, **kw)
File "C:\Anaconda\lib\site‑packages\jupyter_client\manager.py", line 249, in _launch_kernel
return launch_kernel(kernel_cmd, **kw)
File "C:\Anaconda\lib\site‑packages\jupyter_client\launcher.py", line 132, in launch_kernel
proc = Popen(cmd, **kwargs)
File "C:\Anaconda\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Anaconda\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
ValueError: embedded null character


Discussion:
How may I fix this?

Hey @abaillet, thanks for reporting. This error could be fixed in our latest version (5.3.0).

Since it's still not available in Anaconda, you have two options:

1. Use our Windows installer, which you can find [here](https://github.com/spyder-ide/spyder/releases).
2. Create a new environment with conda-forge packages. For that, please close Spyder, open the Anaconda Prompt and run the following commands there:

        conda create -n spyder-cf -c conda-forge spyder
        conda activate spyder-cf
        spyder

Let us know if that works for you.
Dear @ccordoba12 I tried running the commands you suggested, but this error occured when I tried to run the final command:


(spyder-cf) C:\Users\Alvaro Baillet Boliv>spyder
Traceback (most recent call last):
  File "C:\Anaconda\envs\spyder-cf\lib\site-packages\spyder\config\manager.py", line 642, in <module>
    CONF = ConfigurationManager()
  File "C:\Anaconda\envs\spyder-cf\lib\site-packages\spyder\config\manager.py", line 73, in __init__
    self._user_config = MultiUserConfig(
  File "C:\Anaconda\envs\spyder-cf\lib\site-packages\spyder\config\user.py", line 786, in __init__
    self._configs_map[name] = config_class(**new_kwargs)
  File "C:\Anaconda\envs\spyder-cf\lib\site-packages\spyder\config\user.py", line 226, in __init__
    self.apply_configuration_patches(old_version=old_version)
  File "C:\Anaconda\envs\spyder-cf\lib\site-packages\spyder\config\user.py", line 725, in apply_configuration_patches
    self._update_defaults(self.defaults, old_version)
  File "C:\Anaconda\envs\spyder-cf\lib\site-packages\spyder\config\user.py", line 355, in _update_defaults
    old_defaults = self._load_old_defaults(old_version)
  File "C:\Anaconda\envs\spyder-cf\lib\site-packages\spyder\config\user.py", line 342, in _load_old_defaults
    old_defaults.read(osp.join(path, name + '.ini'))
  File "C:\Anaconda\envs\spyder-cf\lib\configparser.py", line 698, in read
    self._read(fp, filename)
  File "C:\Anaconda\envs\spyder-cf\lib\configparser.py", line 1086, in _read
    raise MissingSectionHeaderError(fpname, lineno, line)
configparser.MissingSectionHeaderError: File contains no section headers.
file: 'C:\\Users\\Alvaro Baillet Boliv\\.spyder-py3\\config\\defaults\\defaults-transient-70.1.0.ini', line: 1
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Anaconda\envs\spyder-cf\Scripts\spyder-script.py", line 10, in <module>
    sys.exit(main())
  File "C:\Anaconda\envs\spyder-cf\lib\site-packages\spyder\app\start.py", line 113, in main
    from spyder.config.manager import CONF
  File "C:\Anaconda\envs\spyder-cf\lib\site-packages\spyder\config\manager.py", line 645, in <module>
    from spyder.app.utils import create_application
  File "C:\Anaconda\envs\spyder-cf\lib\site-packages\spyder\app\utils.py", line 28, in <module>
    from spyder.config.manager import CONF
ImportError: cannot import name 'CONF' from partially initialized module 'spyder.config.manager' (most likely due to a circular import) (C:\Anaconda\envs\spyder-cf\lib\site-packages\spyder\config\manager.py)


Please advise, 

Álvaro
Please remove this directory

    C:\Users\Alvaro Baillet Boliv\.spyder-py3

and try again. That should solve your problem.

Resolving patch:
diff --git a/spyder/config/manager.py b/spyder/config/manager.py
--- a/spyder/config/manager.py
+++ b/spyder/config/manager.py
@@ -641,9 +641,20 @@ def reset_shortcuts(self):
 try:
     CONF = ConfigurationManager()
 except Exception:
-    from qtpy.QtWidgets import QMessageBox
-    from spyder.app.utils import create_application
-    app = create_application()
+    from qtpy.QtWidgets import QApplication, QMessageBox
+
+    # Check if there's an app already running
+    app = QApplication.instance()
+
+    # Create app, if there's none, in order to display the message below.
+    # NOTE: Don't use the functions we have to create a QApplication here
+    # because they could import CONF at some point, which would make this
+    # fallback fail.
+    # See issue spyder-ide/spyder#17889
+    if app is None:
+        app = QApplication(['Spyder'])
+        app.setApplicationName('Spyder')
+
     reset_reply = QMessageBox.critical(
         None, 'Spyder',
         _("There was an error while loading Spyder configuration options. "


Test patch: