Jupyter Notebook’s python3 (ipykernel) fails to start and reports “No module named ‘psutil._psutil_windows'”

Record an error when starting a Jupyter Notebook

Environment

Win10 default installed environment py3.9 32bit, jupyter book is installed in the virtual environment py3.9 (64bit) established by conda

Question 1

Jupyter notebook starts the kernel and always shows that reconnecting finally failed
wrong
An error is reported every time it starts: ModuleNotFoundError: No module named 'psutil._psutil_windows'

Traceback (most recent call last):
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\site-packages\ipykernel_launcher.py", line 15, in <module>
    from ipykernel import kernelapp as app
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\site-packages\ipykernel\kernelapp.py", line 51, in <module>
    from .ipkernel import IPythonKernel
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\site-packages\ipykernel\ipkernel.py", line 19, in <module>
    from .comm.comm import BaseComm
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\site-packages\ipykernel\comm\__init__.py", line 3, in <module>
    from .comm import Comm
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\site-packages\ipykernel\comm\comm.py", line 14, in <module>
    from ipykernel.kernelbase import Kernel
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\site-packages\ipykernel\kernelbase.py", line 35, in <module>
    import psutil
  File "C:\Users\meij1\AppData\Roaming\Python\Python39\site-packages\psutil\__init__.py", line 109, in <module>
    from . import _pswindows as _psplatform
  File "C:\Users\meij1\AppData\Roaming\Python\Python39\site-packages\psutil\_pswindows.py", line 35, in <module>
    from ._psutil_windows import ABOVE_NORMAL_PRIORITY_CLASS
ModuleNotFoundError: No module named 'psutil._psutil_windows'

According to the information, it is found that the virtual environment py3.9 is imported from the py39 of the external local environment when importing psutil, and it turns out that there is no psutil module in this environment.

Try again after reinstalling psutil with pip in the base environment:
install

Question 2

Run it again and report an error instead of ImportError: DLL load failed while importing _psutil_windows: %1 is not a valid Win32 application: It looks like a 32-bit program is running on a 64-bit system.

Traceback (most recent call last):
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\site-packages\ipykernel_launcher.py", line 15, in <module>
    from ipykernel import kernelapp as app
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\site-packages\ipykernel\kernelapp.py", line 51, in <module>
    from .ipkernel import IPythonKernel
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\site-packages\ipykernel\ipkernel.py", line 19, in <module>
    from .comm.comm import BaseComm
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\site-packages\ipykernel\comm\__init__.py", line 3, in <module>
    from .comm import Comm
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\site-packages\ipykernel\comm\comm.py", line 14, in <module>
    from ipykernel.kernelbase import Kernel
  File "C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9\lib\site-packages\ipykernel\kernelbase.py", line 35, in <module>
    import psutil
  File "C:\Users\meij1\AppData\Roaming\Python\Python39\site-packages\psutil\__init__.py", line 109, in <module>
    from . import _pswindows as _psplatform
  File "C:\Users\meij1\AppData\Roaming\Python\Python39\site-packages\psutil\_pswindows.py", line 35, in <module>
    from ._psutil_windows import ABOVE_NORMAL_PRIORITY_CLASS
ImportError: DLL load failed while importing _psutil_windows: %1 is not a valid Win32 application.

After some research, I found that the problem is that the local environment interferes with my py3.9 virtual environment. The psutil installed in the local environment is 32bit, 32bBut the default setting of the virtual environment py3.9 is 64bit platform, see the following platform:win-64

(py3.9) C:\Users\meij1\Videos>conda info
     active environment: py3.9
    active env location : C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs\py3.9
            shell level: 2
       user config file: C:\Users\meij1\.condarc
 populated config files: C:\Users\meij1\.condarc
          conda version: 4.12.0
    conda-build version : not installed
         python version: 3.9.7.final.0
       virtual packages: __win=0=0
                          __archspec=1=x86_64
       base environment : C:\Users\meij1\3D Objects\Anarchy\Miniconda3 (writable)
      conda av data dir : C:\Users\meij1\3D Objects\Anarchy\Miniconda3\etc\conda
  conda av metadata url : None
           channel URLs: https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64
                          https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/noarch
                          https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64
                          https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\Users\meij1\3D Objects\Anarchy\Miniconda3\pkgs
                          C:\Users\meij1\.conda\pkgs
                          C:\Users\meij1\AppData\Local\conda\conda\pkgs
       envs directories : C:\Users\meij1\3D Objects\Anarchy\Miniconda3\envs
                          C:\Users\meij1\.conda\envs
                          C:\Users\meij1\AppData\Local\conda\conda\envs
               **platform : win-64**
             user-agent : conda/4.12.0 requests/2.27.1 CPython/3.9.7 Windows/10 Windows/10.0.19042
          administrator : False
             netrc file : None
           offline mode : False

It should be that the existence of the two environments confuses psutil. After uninstalling the 32bit psutil of this machine, reinstalling the psutil of py3.6 will be no problem.

Problem Solved

The kernel starts normally

[I 22:47:29.154 NotebookApp] Kernel started: 37ce7359-26a5-4911-acbe-6ae21e40bce3, name: python3
[I 22:49:29.675 NotebookApp] Saving file at /Jupyter Notebook/Untitled.ipynb

After the fact

  1. Analyze the specific environment based on the error message base/py3.9…
  2. It is recommended that after installing minicoda/Anaconda, the local python environment can be deleted to avoid some strange problems.
  3. How to modify the platform information of conda.
conda config --env --set subdir win-32 #under windows
conda config --env --set subdir linux-32 # under linux