diff --git a/packages/neuron/install-python-prefix.patch b/packages/neuron/install-python-prefix.patch
new file mode 100644
index 0000000000000000000000000000000000000000..9f4c380bdd79ca3149860b39067bb9aea5d1862b
--- /dev/null
+++ b/packages/neuron/install-python-prefix.patch
@@ -0,0 +1,87 @@
+diff --git c/CMakeLists.txt w/CMakeLists.txt
+index a58773313..7781a8863 100644
+--- c/CMakeLists.txt
++++ w/CMakeLists.txt
+@@ -427,6 +427,8 @@ if(NRN_ENABLE_PYTHON)
+   set(NRN_DEFAULT_PYTHON_LIBRARIES ${PYTHON_LIBRARIES})
+   set(NRN_DEFAULT_PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS})
+   set(USE_PYTHON 1)
++
++  find_package (Python COMPONENTS Interpreter Development)
+ else()
+   set(USE_PYTHON 0)
+ endif()
+diff --git c/cmake/BuildOptionDefaults.cmake w/cmake/BuildOptionDefaults.cmake
+index 2c9920229..e65575cf1 100644
+--- c/cmake/BuildOptionDefaults.cmake
++++ w/cmake/BuildOptionDefaults.cmake
+@@ -29,7 +29,7 @@ set(NRN_NMODL_CXX_FLAGS_DEFAULT "-O0")
+ set(NRN_SANITIZERS_DEFAULT "")
+ 
+ # Some distributions may set the prefix. To avoid errors, unset it
+-set(NRN_MODULE_INSTALL_OPTIONS_DEFAULT "--prefix= --home=${CMAKE_INSTALL_PREFIX}")
++set(NRN_MODULE_INSTALL_OPTIONS_DEFAULT "--prefix=${CMAKE_INSTALL_PREFIX}")
+ set(NRN_PYTHON_DYNAMIC_DEFAULT "")
+ set(NRN_MPI_DYNAMIC_DEFAULT "")
+ set(NRN_RX3D_OPT_LEVEL_DEFAULT "0")
+diff --git c/setup.py w/setup.py
+index ef62207c3..cc4bb20f5 100644
+--- c/setup.py
++++ w/setup.py
+@@ -5,6 +5,7 @@ import subprocess
+ import sys
+ from collections import defaultdict
+ from distutils import log
++import distutils.sysconfig as sc
+ from distutils.dir_util import copy_tree
+ from distutils.version import LooseVersion
+ from setuptools import Command, Extension
+@@ -94,7 +95,7 @@ class CMakeAugmentedExtension(Extension):
+         cmake_proj_dir="",
+         cmake_flags=None,
+         cmake_collect_dirs=None,
+-        cmake_install_python_files="lib/python",
++        cmake_install_python_files=sc.get_python_lib(prefix='', plat_specific=True,standard_lib=False),
+         **kw,
+     ):
+         """Creates a CMakeAugmentedExtension.
+diff --git c/src/nrnpython/CMakeLists.txt w/src/nrnpython/CMakeLists.txt
+index e4a4e3f18..970b660db 100644
+--- c/src/nrnpython/CMakeLists.txt
++++ w/src/nrnpython/CMakeLists.txt
+@@ -124,7 +124,7 @@ if(NRN_ENABLE_PYTHON_DYNAMIC)
+       target_link_libraries(nrnpython${pyver} nrniv_lib ${pylib} ${Readline_LIBRARY})
+       add_dependencies(nrnpython${pyver} nrniv_lib)
+       list(APPEND nrnpython_lib_list nrnpython${pyver})
+-      install(TARGETS nrnpython${pyver} DESTINATION ${NRN_INSTALL_SHARE_LIB_DIR})
++      install(TARGETS nrnpython${pyver} DESTINATION ${CMAKE_INSTALL_PREFIX}/${Python_SITEARCH})
+     endforeach()
+   else()
+     # build python3 library and install it
+@@ -134,7 +134,7 @@ if(NRN_ENABLE_PYTHON_DYNAMIC)
+       target_include_directories(nrnpython3 PRIVATE "${NRN_OC_GENERATED_SOURCES}")
+       list(APPEND nrnpython_lib_list nrnpython3)
+       target_include_directories(nrnpython3 BEFORE PUBLIC ${NRNPYTHON_INCLUDE3} ${INCLUDE_DIRS})
+-      install(TARGETS nrnpython3 DESTINATION ${NRN_INSTALL_SHARE_LIB_DIR})
++      install(TARGETS nrnpython3 DESTINATION ${CMAKE_INSTALL_PREFIX}/${Python_SITEARCH})
+     endif()
+   endif()
+ endif()
+@@ -142,7 +142,7 @@ endif()
+ # Install package files that were created in build (e.g. .py.in)
+ install(
+   DIRECTORY ${PROJECT_BINARY_DIR}/share/lib/python
+-  DESTINATION ${NRN_LIBDIR}
++  DESTINATION ${CMAKE_INSTALL_PREFIX}/${Python_SITEARCH}
+   FILES_MATCHING
+   PATTERN *.py
+   PATTERN *.so
+@@ -267,7 +267,7 @@ echo 'Installing python module using:'\n\
+ set -ex\n\
+ cd ${CMAKE_CURRENT_BINARY_DIR}\n\
+ export SETUPTOOLS_USE_DISTUTILS=stdlib
+-$1 setup.py --quiet build --build-lib=${NRN_PYTHON_BUILD_LIB} install ${NRN_MODULE_INSTALL_OPTIONS}\n\
++$1 setup.py build --build-lib=${NRN_PYTHON_BUILD_LIB} install ${NRN_MODULE_INSTALL_OPTIONS}\n\
+ ")
+   foreach(pyexe ${NRN_PYTHON_EXE_LIST})
+     # install(CODE ...) only takes a single CMake code expression, so we can't easily roll our own
diff --git a/packages/neuron/package.py b/packages/neuron/package.py
index 313c8e6ed7abb064113e37af50e79e9e359709c1..e564ba5fb04771c09c805f50663a5158678457c9 100644
--- a/packages/neuron/package.py
+++ b/packages/neuron/package.py
@@ -53,8 +53,11 @@ class Neuron(CMakePackage):
     depends_on("caliper", when="+caliper")
     depends_on("py-numpy", type="run")
 
+    extends('python', when='+python')
+
     patch("patch-v782-git-cmake-avx512.patch", when="@7.8.2")
     patch("nrn_find_ncurses.patch", when="@8.2.2")
+    patch("install-python-prefix.patch", when="@8:9+python")
 
     def cmake_args(self):
         spec = self.spec
@@ -140,22 +143,6 @@ class Neuron(CMakePackage):
             corenrn_makefile = join_path(self.prefix, "share/coreneuron/nrnivmodl_core_makefile")
             filter_file(env["CXX"], cxx_compiler, corenrn_makefile, **kwargs)
 
-    def setup_run_environment(self, env):
-        env.prepend_path("PATH", join_path(self.prefix, "bin"))
-        env.prepend_path("LD_LIBRARY_PATH", join_path(self.prefix, "lib"))
-        if self.spec.satisfies("+python"):
-            env.prepend_path("PYTHONPATH", self.spec.prefix.lib.python)
-
-    # override setup_{build/run}_environment for standalone package tests
-    def setup_build_environment(self, env):
-        self.setup_run_environment(env)
-
-    def setup_dependent_build_environment(self, env, dependent_spec):
-        self.setup_run_environment(env)
-
-    def setup_dependent_run_environment(self, env, dependent_spec):
-        self.setup_run_environment(env)
-
     @run_after('install')
     @on_package_attributes(run_tests=True)
     def install_test(self):