python - 为什么我的 jupyter 内核在导入 numpy 时在虚拟环境中运行时会死机?
问题描述
我正在使用 conda 设置的虚拟环境中工作。我想做的是打开一个新的 Jupyter 笔记本并使用这个虚拟环境在笔记本中工作。但是,我认为我的虚拟环境中缺少某种必要的包。
当我从终端(当前使用 OSX 10.13.6)启动 Jupyter 笔记本时,我可以在屏幕右上角的“新建”按钮中看到使用 Python(虚拟环境)打开新笔记本的选项。
当我以 Python (virtualEnvironment) 形式打开一个新笔记本时,一切看起来都很好,所以我尝试在第一个单元格中运行以下命令:
import numpy as np
我在 Jupyter 中收到以下错误消息作为弹出窗口:
Kernal restarting: The kernel appears to have died. It will restart automatically.
我知道 Jupyter 笔记本的某些方面正在运行,因为我可以在第一个单元格中运行以下命令,没问题:
from IPython.display import display, Math
display(Math('\\text{This is latex formatting:} \\quad x + 2y = 3j + 4'))
有没有人对可能导致内核死机的原因有任何想法?
以下是虚拟环境中的所有包:
# packages in environment at /opt/anaconda3/envs/virtualEnvironment:
#
# Name Version Build Channel
appnope 0.1.0 py37_0
attrs 19.3.0 py_0 conda-forge
backcall 0.1.0 py37_0
blas 1.0 mkl
bleach 3.1.5 pyh9f0ad1d_0 conda-forge
brotlipy 0.7.0 py37h9bfed18_1000 conda-forge
ca-certificates 2020.4.5.1 hecc5488_0 conda-forge
certifi 2020.4.5.1 py37hc8dfbb8_0 conda-forge
cffi 1.14.0 py37h356ff06_0 conda-forge
chardet 3.0.4 py37hc8dfbb8_1006 conda-forge
cryptography 2.9.2 py37he655712_0 conda-forge
decorator 4.4.2 py_0
defusedxml 0.6.0 py_0 conda-forge
entrypoints 0.3 py37_0
idna 2.9 py_1 conda-forge
importlib-metadata 1.6.0 py37hc8dfbb8_0 conda-forge
importlib_metadata 1.6.0 0 conda-forge
intel-openmp 2019.4 233
ipykernel 5.1.4 py37h39e3cac_0
ipython 7.13.0 py37h5ca1d4c_0
ipython_genutils 0.2.0 py37_0
jedi 0.17.0 py37_0
jinja2 2.11.2 pyh9f0ad1d_0 conda-forge
json5 0.9.0 py_0 conda-forge
jsonschema 3.2.0 py37hc8dfbb8_1 conda-forge
jupyter_client 6.1.3 py_0
jupyter_core 4.6.3 py37_0
jupyterlab 2.1.2 py_0 conda-forge
jupyterlab_server 1.1.1 py_0 conda-forge
libcxx 4.0.1 hcfea43d_1
libcxxabi 4.0.1 hcfea43d_1
libedit 3.1.20181209 hb402a30_0
libffi 3.2.1 h6de7cb9_1006 conda-forge
libgfortran 3.0.1 h93005f0_2
libsodium 1.0.16 h3efe00b_0
markupsafe 1.1.1 py37h9bfed18_1 conda-forge
mistune 0.8.4 py37h9bfed18_1001 conda-forge
mkl 2019.4 233
mkl-service 2.3.0 py37hfbe908c_0
mkl_fft 1.0.15 py37h5e564d8_0
mkl_random 1.1.0 py37ha771720_0
nbconvert 5.6.1 py37hc8dfbb8_1 conda-forge
nbformat 5.0.6 py_0 conda-forge
ncurses 6.2 h0a44026_1
notebook 6.0.3 py37_0 conda-forge
numpy 1.18.1 py37h7241aed_0
numpy-base 1.18.1 py37h6575580_1
openssl 1.1.1g h0b31af3_0 conda-forge
packaging 20.1 py_0 conda-forge
pandas 1.0.3 py37h6c726b0_0
pandoc 2.9.2.1 0 conda-forge
pandocfilters 1.4.2 py_1 conda-forge
parso 0.7.0 py_0
patsy 0.5.1 py37_0
pexpect 4.8.0 py37_0
pickleshare 0.7.5 py37_0
pip 20.0.2 py37_1
prometheus_client 0.7.1 py_0 conda-forge
prompt-toolkit 3.0.4 py_0
prompt_toolkit 3.0.4 0
ptyprocess 0.6.0 py37_0
pycparser 2.20 py_0 conda-forge
pygments 2.6.1 py_0
pyopenssl 19.1.0 py_1 conda-forge
pyparsing 2.4.7 pyh9f0ad1d_0 conda-forge
pyrsistent 0.16.0 py37h9bfed18_0 conda-forge
pysocks 1.7.1 py37hc8dfbb8_1 conda-forge
python 3.7.7 hc70fcce_0_cpython
python-dateutil 2.8.1 py_0
python_abi 3.7 1_cp37m conda-forge
pytz 2020.1 py_0
pyzmq 18.1.1 py37h0a44026_0
readline 8.0 h1de35cc_0
requests 2.23.0 pyh8c360ce_2 conda-forge
scipy 1.2.1 py37h1410ff5_0
send2trash 1.5.0 py_0 conda-forge
setuptools 46.1.3 py37_0
six 1.14.0 py37_0
sqlite 3.31.1 h5c1f38d_1
statsmodels 0.11.0 py37h1de35cc_0
terminado 0.8.3 py37hc8dfbb8_1 conda-forge
testpath 0.4.4 py_0 conda-forge
tk 8.6.8 ha441bb4_0
tornado 6.0.4 py37h1de35cc_1
traitlets 4.3.3 py37_0
urllib3 1.25.9 py_0 conda-forge
wcwidth 0.1.9 py_0
webencodings 0.5.1 py_1 conda-forge
wheel 0.34.2 py37_0
xz 5.2.5 h1de35cc_0
zeromq 4.3.1 h0a44026_3
zipp 3.1.0 py_0 conda-forge
zlib 1.2.11 h1de35cc_3
我以前尝试使用以下问题的答案来解决此问题:Conda environment not displayed in Jupyter Notebook。我无法弄清楚我目前的情况是什么问题。
其他可能有价值的信息:如果我在正常环境中启动一个新的 Jupyter 笔记本,numpy 导入就好了。这是我第一次遇到内核死机问题。我以前从未像这样从头开始构建虚拟环境;我通过终端使用 conda 安装了 ipython、ipykernel 和 jupyter。我使用 pip 安装了 statsmodels。也许使用 pip 是我的错误?
这可能是路径问题吗?我之前下载过anaconda的GUI版本。当我提示终端
echo $PATH
打印这些路径:
/Users/RZ/anaconda3/bin:
/opt/anaconda3/condabin:
/usr/local/bin:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/usr/texbin:
/opt/X11/bin:
/usr/local/git/bin
最近,我执行了以下操作:
当我运行时:
jupyter nbextension list
我得到这个作为输出:
Known nbextensions:
config dir: /Users/Rentazilla/anaconda3/etc/jupyter/nbconfig
tree section
nb_conda/tree disabled
这是问题吗?也许 nb_conda/tree 被错误地禁用了。根据 Jupyter notebook github ( https://github.com/jupyter/notebook/issues/1716 ) 上的至少一个链接,应禁用 nbextension list 和 serverextension。
20 年 5 月 14 日
好吧,经过数小时尝试一百万种不同的事情后,我想出了一个可行的解决方案,但我认为它不是很漂亮。
不知道昨天该怎么办,我决定卸载并重新安装 conda。我使用了https://docs.anaconda.com/anaconda/install/uninstall/中详述的完整方法, 并卸载了所有 anaconda3 文件夹并使用最新的 miniconda 安装程序重新安装了 conda。
然后我做了一个新的conda环境:
conda create -n py3 ipykernel ipython jupyter_client jupyter_core traitlets ipython_genutils
接下来我安装nb_conda_kernels
在基础环境中。然后我继续在环境中安装 numpy、sympy、matplotlib、stats models 和 jupyter_lab py3
。
我注意到 jupyter 仍然将一些旧环境视为内核。我需要摆脱它们。现在我只保留基本环境和py3
环境
我注意到 jupyter 为其内核使用了错误的路径,所以我改变了它
这并没有解决问题。我在 base 和 py3 环境中将 python 降级为 3.7.7。那也没有解决问题。所以我尝试使用终端在 python 中运行一些基本命令。我发现运行import numpy
导致python崩溃并给出了输出Illegal Instruction: 4
。一些在线搜索将我带到了这个页面:
我决定也尝试降级 numpy:conda install -n py3 numpy=1.17
我决定通过包含以下脚本的终端使用 python 测试一个名为 test1.py 的文件:
num = int(input("Enter a number: "))
import numpy as np
print(num)
import sys
print(sys.version)
我根据上一个链接中的答案复制下来。这运行得很好。运行:
python -u -m trace -t test1.py
然而在终端里却给出了一个可笑的长信息流。
将 numpy 降级到 1.18.5 解决了这个问题,至少现在是这样。
解决方案
jupyter notebook github问题建议卸载jupyter并重新安装:https ://github.com/jupyter/notebook/issues/1892#issuecomment-260403964
关于在 jupyter 中使用多个 conda 环境,我通常会这样做:
nb_conda_kernels
在基础环境中 安装conda install -n base nb_conda_kernels
- 在jupyter
ipykernel
中应该可以访问的任何 conda 环境中安装conda install -n ENVNAME ipykernel
在使用 conda 环境时,最好尽可能使用conda install
。statsmodels 在 中可用conda
,所以你应该conda install
这样做。
推荐阅读
- python - 如何确定 Facebook ID 是否属于页面或个人资料?
- javascript - React 中的实例
- laravel - (1/1) NotFoundHttpException
- html - 如何使用提交表单发布子对象的数组列表?
- angularjs - 键入时显示存储在数组中的值
- javascript - 设置动态注册模块的顺序
- javascript - Vue.js 和 vue-datepicker:在全局状态下保存一个选择的时间段
- assembly - OSDEV 多任务运行应用程序
- python - 来自熊猫数据框的列表理解
- xamarin.forms - 在使用 xamarin 表单的代码中为 ResourceDictionary 内的标签赋值