python - 为什么我的 jupyter 内核在导入 numpy 时在虚拟环境中运行失败?

标签 python jupyter-notebook ipython jupyter conda

我在使用 conda 设置的虚拟环境中工作。我想要做的是打开一个新的 Jupyter notebook 并使用这个虚拟环境在 notebook 中工作。但是,我认为我的虚拟环境中缺少某种必要的包。
当我从终端(当前使用 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 environments not showing up in Jupyter Notebook .我无法弄清楚我目前的情况是什么问题。
其他可能有值(value)的信息:如果我在正常环境中启动一个新的 Jupyter 笔记本,numpy 导入就好了。这是我第一次遇到内核死机的问题。我以前从未像这样从头开始构建虚拟环境;我通过终端使用 conda 安装了 ipython、ipykernel 和 jupyter。我使用 pip 安装了 statsmodels。也许使用 pip 是我的错误?

这可能是 PATH 问题吗?我之前下载过 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 列表和 serverextension。
5/14/20
好吧,在尝试了一百万种不同的事情很多小时后,我想出了一个有效的解决方案,但我认为它不是很漂亮。
昨天不知道该做什么,我决定卸载并重新安装 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在基础环境中。然后我继续在 py3 中安装 numpy、sympy、matplotlib、stats 模型和 jupyter_lab环境。
我注意到 jupyter 仍然将一些旧环境视为内核;我需要摆脱它们。现在我只保留基本环境和 py3环境
我注意到 jupyter 对其内核使用了错误的路径,所以我改变了它
这并没有解决问题。我在 base 和 py3 环境中将 python 降级为 3.7.7。这也没有解决问题。所以我尝试使用终端在 python 中运行一些基本命令。我发现正在运行 import numpy导致 python 崩溃并给出输出 Illegal Instruction: 4 .一些在线搜索将我带到了这个页面:
https://apple.stackexchange.com/questions/387935/python-quit-working-and-now-i-get-illegal-instruction-4-message
我决定也尝试降级 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
  • 安装 ipykernel在 jupyter 中应该可以访问的任何 conda 环境中
  • conda install -n ENVNAME ipykernel

  • 使用conda环境时,最好使用conda install如果可能。 statsmodels 在 conda 中可用,所以你应该 conda install它。

    关于python - 为什么我的 jupyter 内核在导入 numpy 时在虚拟环境中运行失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61737775/

    相关文章:

    python - 如何在Python中打印方法的返回值?

    python - 如何在 ipython 中显示对象的对象

    python - 在 PySNMP 中查询数字 OID?

    ipython - 如何向 IPython(笔记本)shell 命令提供内联输入?

    jupyter-notebook - 使用击键在 jupyter 笔记本中自动格式化代码

    python - 操作失败: Not authorized on aggregations to execute the command

    python - Pandas 和 IPython 的变量可见性问题

    python - 通过两个 Pandas DataFrame 加速嵌套 for 循环

    python - 如何将 *args 传递给我的 timeit.Timer 对象?

    python - 更新 numpy 后,np.lib.stride_tricks.as_strided 给出错误