On Thu, May 25, 2023 at 08:03:19PM +0100, Julian Gilbey wrote:
> On Thu, May 25, 2023 at 09:25:50AM -0700, Brian Vaughan wrote:
> > # Spyder, Help > Dependencies
> > [...]
> > pylsp >=1.7.1;<1.8.0          :  1.7.1 (OK)
> > pylsp_black >=1.2.0           :  None (NOK)
> 
> Hi Brian,
> 
> Thanks for sending all this through.  This is so weird.
> [...]
> All looks normal here.
> 
> I am utterly mystified why spyder is not finding pylsp_black.  I'll
> have a think about it and get back to you.

If you're able to do the following tests, it might help shed some
light on what's going wrong.  The attached is a patch for the file
/usr/lib/python3/dist-packages/spyder/dependencies.py
to give more debugging output.  Please apply the patch; you can do
this by saving the patch to a file, say /tmp/dependencies.py.diff,
then running the commands:

cd /usr/lib/python3/dist-packages/spyder/dependencies.py
patch --backup < /tmp/dependencies.py.diff

where the "--backup" option saves a copy of the original
dependencies.py file as dependencies.py.orig.

Once this patch is applied, start spyder from a terminal using the
command:

spyder --debug-info verbose

and let it run at least until it gives the warning message about
pylsp_black not being found, then quit spyder.  There will be lots of
messages written to the terminal, but they will also be saved in the
file .config/spyder-py3/spyder-debug.log

Have a look through this file for "pylsp_black".  Here's what I see:

2023-05-29 11:00:24,689 [DEBUG] [spyder.dependencies] -> 
Dependency(pylsp_black, python_lsp_black) starting
2023-05-29 11:00:24,931 [DEBUG] [spyder.dependencies] -> Dependency: 
get_module_version returned None for pylsp_black
2023-05-29 11:00:24,932 [DEBUG] [spyder.dependencies] -> Dependency: 
get_package_version returned 1.2.1 for pylsp_black

I'm guessing you'll get something quite different, probably with some
further debugging output following it (perhaps "Dependency: exception
raised..." followed by "Dependency: when exception raised...").  If
you're able to do this experiment, please could you send me these
lines of the log file.  (I don't imagine that I would need any more of
the log file at this point.)

I do hope this will help to find the source of the problem!

Best wishes,

   Julian
--- dependencies.py.orig	2023-02-23 10:59:49.000000000 +0000
+++ dependencies.py	2023-05-29 10:59:40.056580272 +0100
@@ -10,6 +10,7 @@
 import os
 import os.path as osp
 import sys
+import logging
 
 # Local imports
 from spyder.config.base import _, is_pynsist, running_in_ci, running_in_mac_app
@@ -17,6 +18,8 @@
 
 HERE = osp.dirname(osp.abspath(__file__))
 
+logger = logging.getLogger(__name__)
+
 # =============================================================================
 # Kind of dependency
 # =============================================================================
@@ -319,21 +322,37 @@
         # * Package name: python-lsp-black.
         # * Distribution name: python_lsp_black
         self.distribution_name = self.package_name.replace('-', '_')
-
+        logger.debug(
+            "Dependency(%s, %s) starting", modname, self.distribution_name
+        )
+        
         if installed_version is None:
             try:
                 self.installed_version = programs.get_module_version(modname)
+                logger.debug(
+                    "Dependency: get_module_version returned %s for %s",
+                    self.installed_version, modname
+                )
                 if not self.installed_version:
                     # Use get_package_version and the distribution name
                     # because there are cases for which the version can't
                     # be obtained from the module (e.g. pylsp_black).
                     self.installed_version = programs.get_package_version(
                         self.distribution_name)
-            except Exception:
+                    logger.debug(
+                        "Dependency: get_package_version returned %s for %s",
+                        self.installed_version, modname
+                    )
+            except Exception as exc:
                 # NOTE: Don't add any exception type here!
                 # Modules can fail to import in several ways besides
                 # ImportError
                 self.installed_version = None
+                logger.debug("Dependency: exception raised: %s", exc)
+                logger.debug(
+                    "Dependency: when exception raised: sys.path = %s",
+                    sys.path
+                )
         else:
             self.installed_version = installed_version
 

Reply via email to