From a76e1d303d1fdf061b1d74a16b204a3214fe4ff0 Mon Sep 17 00:00:00 2001 From: Ryan Clary <9618975+mrclary@users.noreply.github.com> Date: Fri, 1 Mar 2024 21:53:04 -0800 Subject: [PATCH] Clean up current working directory manipulations --- spyder_kernels/console/kernel.py | 5 ----- spyder_kernels/console/start.py | 30 +++++++++++++++--------------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/spyder_kernels/console/kernel.py b/spyder_kernels/console/kernel.py index 331c88a2..9072dd9a 100644 --- a/spyder_kernels/console/kernel.py +++ b/spyder_kernels/console/kernel.py @@ -76,11 +76,6 @@ def __init__(self, *args, **kwargs): # Socket to signal shell_stream locally self.loopback_socket = None - # Re-add current working directory path into sys.path after - # removing it before kernel started - if '' not in sys.path: - sys.path.insert(0, '') - # Store original sys.path. Kernels are started with PYTHONPATH # removed from environment variables, so this will never have # user paths and should be clean. diff --git a/spyder_kernels/console/start.py b/spyder_kernels/console/start.py index c66c086f..2d79a1dd 100644 --- a/spyder_kernels/console/start.py +++ b/spyder_kernels/console/start.py @@ -16,6 +16,15 @@ import sys import site +# Remove current directory from sys.path to prevent kernel +# crashes when people name Python files or modules with +# the same name as standard library modules. +# See spyder-ide/spyder#8007 +# Inject it back into sys.path after all imports in this module but +# before the kernel is initialized +while '' in sys.path: + sys.path.remove('') + # Third-party imports from traitlets import DottedObjectName @@ -29,14 +38,6 @@ def import_spydercustomize(): parent = osp.dirname(here) customize_dir = osp.join(parent, 'customize') - # Remove current directory from sys.path to prevent kernel - # crashes when people name Python files or modules with - # the same name as standard library modules. - # See spyder-ide/spyder#8007 - # Inject it back into sys.path after kernel starts - while '' in sys.path: - sys.path.remove('') - # Import our customizations site.addsitedir(customize_dir) import spydercustomize # noqa @@ -177,13 +178,6 @@ def main(): # Import our customizations into the kernel import_spydercustomize() - # Remove current directory from sys.path to prevent kernel - # crashes when people name Python files or modules with - # the same name as standard library modules. - # See spyder-ide/spyder#8007 - while '' in sys.path: - sys.path.remove('') - # Main imports from ipykernel.kernelapp import IPKernelApp from spyder_kernels.console.kernel import SpyderKernel @@ -216,6 +210,12 @@ def close(self): kernel.config = kernel_config() except: pass + + # Re-add current working directory path into sys.path after all of the + # import statements, but before initiializing the kernel. + if '' not in sys.path: + sys.path.insert(0, '') + kernel.initialize() # Set our own magics