今天在用jupyter notebook 的時候發生了kernel error,點開之后提示了以下報錯信息
Traceback (most recent call last):
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\tornado\web.py", line 1704, in _execute
result = await result
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\tornado\gen.py", line 769, in run
yielded = self.gen.throw(*exc_info) # type: ignore
File "E:\Anaconda3\lib\site-packages\notebook\services\sessions\handlers.py", line 69, in post
model = yield maybe_future(
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\tornado\gen.py", line 762, in run
value = future.result()
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\tornado\gen.py", line 769, in run
yielded = self.gen.throw(*exc_info) # type: ignore
File "E:\Anaconda3\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 88, in create_session
kernel_id = yield self.start_kernel_for_session(session_id, path, name, type, kernel_name)
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\tornado\gen.py", line 762, in run
value = future.result()
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\tornado\gen.py", line 769, in run
yielded = self.gen.throw(*exc_info) # type: ignore
File "E:\Anaconda3\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 100, in start_kernel_for_session
kernel_id = yield maybe_future(
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\tornado\gen.py", line 762, in run
value = future.result()
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\tornado\gen.py", line 234, in wrapper
yielded = ctx_run(next, result)
File "E:\Anaconda3\lib\site-packages\notebook\services\kernels\kernelmanager.py", line 168, in start_kernel
super(MappingKernelManager, self).start_kernel(**kwargs)
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\jupyter_client\multikernelmanager.py", line 185, in start_kernel
km.start_kernel(**kwargs)
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\jupyter_client\manager.py", line 309, in start_kernel
kernel_cmd, kw = self.pre_start_kernel(**kw)
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\jupyter_client\manager.py", line 256, in pre_start_kernel
self.write_connection_file()
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\jupyter_client\connect.py", line 468, in write_connection_file
self.connection_file, cfg = write_connection_file(self.connection_file,
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\jupyter_client\connect.py", line 138, in write_connection_file
with secure_write(fname) as f:
File "E:\Anaconda3\lib\contextlib.py", line 113, in __enter__
return next(self.gen)
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\jupyter_core\paths.py", line 435, in secure_write
win32_restrict_file_to_user(fname)
File "C:\Users\boqia\AppData\Roaming\Python\Python38\site-packages\jupyter_core\paths.py", line 361, in win32_restrict_file_to_user
import win32api
ImportError: DLL load failed while importing win32api: %1 不是有效的 Win32 應用程序。
主要先看后兩行報錯信息,我們知道jupyter notebook再import win32api的時候報錯了
這可能是由於python版本是64位的,但電腦中已經存在了32位的pywin32所導致的
我們在命令行中運行以下代碼來卸載pywin32
pip uninstall pywin32
由於可能電腦中存在多個版本的pywin32,所以卸載完成后在運行以下代碼查看時候還有沒卸載的pywin32
pip show pywin32
如果返回了如下結果,則說明電腦中仍然存在pywin32
C:\Users\boqia>pip show pywin32
Name: pywin32
Version: 227
Summary: Python for Window Extensions
Home-page: https://github.com/mhammond/pywin32
Author: Mark Hammond (et al)
Author-email: mhammond@skippinet.com.au
License: PSF
Location: e:\anaconda3\lib\site-packages
Requires:
Required-by: jupyter-core, xlwings, pypiwin32
這時候我們只需要在執行一次卸載命令就行了
pip uninstall pywin32
再徹底卸載完pywin32之后,我們在使用以下命令,安裝所兼容的pywin32
pip install pywin32
安裝完成后,應該就不會再報錯了.