Python:安装了 Anaconda,但无法在 Jupyter 笔记本中导入 numpy 或 matplotlib
Posted
技术标签:
【中文标题】Python:安装了 Anaconda,但无法在 Jupyter 笔记本中导入 numpy 或 matplotlib【英文标题】:Python: Installed Anaconda, but can't import numpy or matplotlib in Jupyter notebook 【发布时间】:2016-10-11 16:15:11 【问题描述】:我是 Python 新手,所以也许有一个简单的解决方案。我安装了 Anaconda 并认为一切都很简单,但即使 Jupyter 工作正常,我也无法将 numpy 和 matplotlib 导入我的笔记本。相反,我得到了这个错误:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-1e0540761e0c> in <module>()
----> 1 import matplotlib.pyplot as plt
2 vals = [1, 2, 3, 4]
3 plt.plot(vals)
//anaconda/lib/python3.5/site-packages/matplotlib/__init__.py in <module>()
120 # cbook must import matplotlib only within function
121 # definitions, so it is safe to import from it here.
--> 122 from matplotlib.cbook import is_string_like, mplDeprecation, dedent, get_label
123 from matplotlib.compat import subprocess
124 from matplotlib.rcsetup import (defaultParams,
//anaconda/lib/python3.5/site-packages/matplotlib/cbook.py in <module>()
31 from weakref import ref, WeakKeyDictionary
32
---> 33 import numpy as np
34 import numpy.ma as ma
35
//anaconda/lib/python3.5/site-packages/numpy/__init__.py in <module>()
144 return loader(*packages, **options)
145
--> 146 from . import add_newdocs
147 __all__ = ['add_newdocs',
148 'ModuleDeprecationWarning',
//anaconda/lib/python3.5/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 ###############################################################################
//anaconda/lib/python3.5/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 *
//anaconda/lib/python3.5/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
//anaconda/lib/python3.5/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: dlopen(//anaconda/lib/python3.5/site-packages/numpy/core/multiarray.so, 10): Symbol not found: _strnlen
Referenced from: /anaconda/lib/python3.5/site-packages/numpy/core/../../../..//libmkl_intel_lp64.dylib
Expected in: flat namespace
in /anaconda/lib/python3.5/site-packages/numpy/core/../../../..//libmkl_intel_lp64.dylib
由于这两个包都出现在$ conda list
中,它可能存在某种链接错误(?),但不幸的是,初学者很难自己解决这个问题。任何人都可以帮忙吗?
【问题讨论】:
乍一看,这似乎是您安装的一个严重问题,因为该错误涉及一些与 NumPy 内部结构有关的.dylib
(DYnamic LIBrary) 文件,而不是您的代码。跨度>
@ForceBru 除了下载和安装 Anaconda、打开 Jupyter 笔记本并运行一些简单的脚本之外,我什么也没做。
我明白了,但这对我来说仍然是一个非常奇怪的错误,因为它抱怨缺少 _strnlen
C 标准库符号这一事实,而且这个符号有点标准,应该存在,但它不是...
我在一个相当旧的系统(OS X 10.6.8)上,但我有 Python 3.5 并且所有软件包都安装得很好并且是最新的。
@ForceBru 看来_strnlen
确实在10.6.8中缺失了,见here和here。有没有办法手动添加?如果我因此而无法使用 SciPy,那将是非常令人沮丧的。
【参考方案1】:
问题的关键可能是您运行的是相当旧的 Mac OS X 版本,因为 _strnlen
甚至不可用 until 10.7 release。
Anaconda 至少是为 OS X 10.7 构建的(根据this),因此您可能在这里运气不佳,可能的解决方案是升级系统。
【讨论】:
【参考方案2】:好的,如果我正确理解你的意思,我建议你将包添加到你的 python 文件所在的同一文件夹中。如果可能的话,添加你用来导入数据的代码,这样我就可以找到任何可能的错误
【讨论】:
错误信息开头引用的代码。 好的,你试过我提到的吗?问题是您的问题无法找到该包,因此您会收到错误 Expected in: flat namespace in /anaconda/lib/python3.5/site-packages/numpy/core/../../../ ..//libmkl_intel_lp64.dylib 如果我最初提到的内容不起作用,请尝试在文件夹 packages 中的 python 3.5 文件夹中添加您的包 @LamprosTzanetos 我尝试将numpy-1.11.2-py35_0
文件夹复制到项目目录,但给出了相同的错误消息。
我过去也遇到过类似的问题。您必须找到包文件夹而不是项目目录。如果找不到,请将程序文件和包添加到新文件夹中,然后再次尝试运行程序。以上是关于Python:安装了 Anaconda,但无法在 Jupyter 笔记本中导入 numpy 或 matplotlib的主要内容,如果未能解决你的问题,请参考以下文章
用 Anaconda 安装了一个包,无法在 Python 中导入
使用 Anaconda (Python) 在 Windows 上安装 Pyomo