Commit 4e9e5aea authored by Bjørn Forsman's avatar Bjørn Forsman
Browse files

spyder: add patch fix startup error

Upstream clears out all sys.path entries that come from PYTHONPATH,
which completely breaks Nixpkgs packaging. Patch out that code to fix
running spyder.

Before:

  $ spyder
  Traceback (most recent call last):
    File "/nix/store/icbklw22yrzy7s8k2ai8chkhrvna8pxr-python3.10-spyder-5.4.0/bin/..spyder-wrapped-wrapped", line 6, in <module>
      from spyder.app.start import main
    File "/nix/store/icbklw22yrzy7s8k2ai8chkhrvna8pxr-python3.10-spyder-5.4.0/lib/python3.10/site-packages/spyder/app/start.py", line 42, in <module>
      import zmq
  ModuleNotFoundError: No module named 'zmq'
  (exit with error code 1)

After:

  $ spyder
  (succeeds startup)

Note that once the GUI is up, it complains (inside GUI) that we've got
wrong version of 2 deps and
"ModuleNotFoundError: No module named 'spyder_kernels'".

Fixes https://github.com/NixOS/nixpkgs/issues/208567
parent 290df59e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -56,6 +56,10 @@ buildPythonPackage rec {
    hash = "sha256-kQBOYRXhjz+OQk7Vlxb/UKiDi92mA8ialsFQ+QzqhlE=";
  };

  patches = [
    ./dont-clear-pythonpath.patch
  ];

  nativeBuildInputs = [
    pyqtwebengine.wrapQtAppsHook
  ];
+24 −0
Original line number Diff line number Diff line
Don't remove sys.path entries that come from PYTHONPATH, or else the app cannot
be used in Nixpkgs.

Author: Bjørn Forsman <bjorn.forsman@gmail.com>
diff -uNr spyder-5.4.0.orig/spyder/app/start.py spyder-5.4.0/spyder/app/start.py
--- spyder-5.4.0.orig/spyder/app/start.py	2022-08-30 02:02:28.000000000 +0200
+++ spyder-5.4.0/spyder/app/start.py	2023-01-02 11:38:28.138744879 +0100
@@ -6,16 +6,8 @@
 # (see spyder/__init__.py for details)
 # -----------------------------------------------------------------------------
 
-# Remove PYTHONPATH paths from sys.path before other imports to protect against
-# shadowed standard libraries.
 import os
 import sys
-if os.environ.get('PYTHONPATH'):
-    for path in os.environ['PYTHONPATH'].split(os.pathsep):
-        try:
-            sys.path.remove(path.rstrip(os.sep))
-        except ValueError:
-            pass
 
 # Standard library imports
 import ctypes