運行jupyter notebook顯示ImportError: cannot import name 'secure_write',導致始終顯示In[*]問題,服務器掛掉


一、問題描述:

    在運行jupyter notebook時,顯示服務掛掉。看后台提示:ImportError: cannot import name 'secure_write',無法重啟成功。

1. 后台日志記錄:

2.jupyter notebook網頁顯示情況:

  • 無法重啟:
  • 顯示掛掉的服務

    -如果在cmd環境,重新鏈接當前環境到jupyter,會出現同后台日志記錄同樣的問題:
Traceback (most recent call last):
  File "D:\InstallSoftware\Anaconda\envs\spyder_py3.5\lib\runpy.py", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "D:\InstallSoftware\Anaconda\envs\spyder_py3.5\lib\runpy.py", line 142, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "D:\InstallSoftware\Anaconda\envs\spyder_py3.5\lib\runpy.py", line 109, in _get_module_details
    __import__(pkg_name)
  File "D:\InstallSoftware\Anaconda\envs\spyder_py3.5\lib\site-packages\ipykernel\__init__.py", line 2, in <module>
    from .connect import *
  File "D:\InstallSoftware\Anaconda\envs\spyder_py3.5\lib\site-packages\ipykernel\connect.py", line 18, in <module>
    import jupyter_client
  File "C:\Users\木子\AppData\Roaming\Python\Python36\site-packages\jupyter_client\__init__.py", line 4, in <module>
    from .connect import *
  File "C:\Users\木子\AppData\Roaming\Python\Python36\site-packages\jupyter_client\connect.py", line 35, in <module>
    from jupyter_core.paths import jupyter_data_dir, jupyter_runtime_dir, secure_write
ImportError: cannot import name 'secure_write'

    閱讀上面的報錯提示代碼,可以看出是ipykernel出了問題,大概是因為我想修改jupyter代碼高亮,以及自動提示,安裝一些列包,結果沒裝上,還把本身的運行環境搞崩了。甚是無語!

二、問題分析:

    在Python中,若遇到 cannot import name ‘XXX’ 錯誤, 其實這有可能出現再模塊導入的順序問題上。 例如:在A文件頭執行到語句 from B import XXX ,程序馬上就會轉到B文件中去,從頭到尾順序尋找B文件中的XXX函數,而A文件就暫停執行,直到把XXX函數復制到內存中,但B文件中的文件頭可能也有導入, 如果B文件頭中又導入了A文件中的函數,由於XXX函數還沒有被復制。所以於A文件因為暫停執行而無法導入,就會出現上面的錯誤了。

三、問題解決:

那么現在針對上面的問題,重裝ipykernel是最簡潔的辦法:
如果是用pip uninstall ipykernel會提示:

錯誤代碼:

ERROR: Cannot uninstall 'ipykernel'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

額。。。后來試了很多方法。方法看后面鏈接。
我的解決方法

  1. 比較奇葩,我去Anaconda Navigator里,在Spyder_py3.5環境中,重新安裝Jupyter Notebook,launing...:
  2. 在cmd環境中測試python -m ipykernel install --user --name=spyder_py3.5,竟然解決問題了:
  3. 重新打開jupyter Notebook,能連接上!

    空心圓圈即是指“服務空閑”,可以用了,開心。

別人的解決方法
別人的方法看着挺有道理的,只是我仍舊不成功,如果仍舊沒有解決你的問題,可以試一試下面的命令:

conda update jupyter_core
  • 以及這個,對於無法正常卸載ipykernel(慎用!)
pip install --ignore-installed ipykernel

reference:https://blog.csdn.net/u010456484/article/details/52054241?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM