Jupyter (IPython) notebook numpy/pandas/matplotlib 错误 (FreeBSD)

Jupyter (IPython) notebook numpy/pandas/matplotlib error (FreeBSD)

我正在尝试在家里设置一个 Jupyter 笔记本服务器。这花了我很长时间,但我已经成功地从 FreeBSD 端口构建并安装了 Python 3.4 和所有必需的软件包。笔记本服务器已启动并且 运行 正常,除了每次我尝试导入 numpy 时:

In[1]: import numpy

出现以下错误:

ImportError                               Traceback (most recent call last)
<ipython-input-1-5a0bd626bb1d> in <module>()
----> 1 import numpy

/usr/local/lib/python3.4/site-packages/numpy/__init__.py in <module>()
    178         return loader(*packages, **options)
    179 
--> 180     from . import add_newdocs
    181     __all__ = ['add_newdocs',
    182                'ModuleDeprecationWarning',

/usr/local/lib/python3.4/site-packages/numpy/add_newdocs.py in <module>()
     11 from __future__ import division, absolute_import, print_function
     12 
---> 13 from numpy.lib import add_newdoc
     14 
     15 ###############################################################################

/usr/local/lib/python3.4/site-packages/numpy/lib/__init__.py in <module>()
      6 from numpy.version import version as __version__
      7 
----> 8 from .type_check import *
      9 from .index_tricks import *
     10 from .function_base import *

/usr/local/lib/python3.4/site-packages/numpy/lib/type_check.py in <module>()
      9            'common_type']
     10 
---> 11 import numpy.core.numeric as _nx
     12 from numpy.core.numeric import asarray, asanyarray, array, isnan, \
     13                 obj2sctype, zeros

/usr/local/lib/python3.4/site-packages/numpy/core/__init__.py in <module>()
     12         os.environ[envkey] = '1'
     13         env_added.append(envkey)
---> 14 from . import multiarray
     15 for envkey in env_added:
     16     del os.environ[envkey]

ImportError: /lib/libgcc_s.so.1: version GCC_4.6.0 required by /usr/local/lib/gcc48/libgfortran.so.3 not found

导入pandas和matplotlib的错误信息不同,但我怀疑与这个numpy导入错误有关。

奇怪的是,所有 3 个包在 Python 和 IPython 控制台上都可以正常工作,完全没有问题! 我用谷歌搜索并进行了以下尝试:

    delete and reinstall numpy -> no change
    append numpy directory to sys.path -> no change
    install a lot of other external packages just to see if it's only related to numpy -> they are all working fine in both consoles and notebook, except scipy giving some error related to numpy

感谢您的帮助!

问题不在于您的 python 模块。底部的错误消息 ImportError: /lib/libgcc_s.so.1: version GCC_4.6.0 required by /usr/local/lib/gcc48/libgfortran.so.3 not found 表示这是 Fortran 库的依赖性错误。显然它需要 gcc 4.6 或更高版本,显然您安装了较低版本。不熟悉 Python 库或您的设置,我猜测这可能是 /usr/ports/devel/py-fortran 的问题。我建议用 gcc -v 检查你机器上的 gcc 版本,以及用 pkg info 安装的任何与 fortran 相关的端口,然后从那里获取它。

我的gcc版本是4.2.1。 我通过将 LD_LBRARY_PATH 设置为 /usr/local/lib/gcc48 来解决这个问题。 gcc48 已经安装在我的系统中。 为了避免每次都设置路径,我将以下行添加到 /.cshrc:

setenv  LD_LIBRARY_PATH /usr/local/lib/gcc48

编辑: 如果您想通过添加到 crontab 来自动启动笔记本服务器,这将不起作用:

@reboot /usr/local/bin/jupyter-notebook

尝试导入 numpy 和依赖于 numpy 的模块时出现相同的错误

我通过复制 /usr/local/bin/jupyter-notebook 并添加了以下行来修复此问题:

    import sys
    import re
    ----------------- add these 2 lines below --------------
    import os
    os.environ['LD_LIBRARY_PATH'] = '/usr/local/lib/gcc48'
    ....

将新文件添加到 crontab 而不是 jupyter-notebook