首页 > 解决方案 > 无法在 python3 和 ImportError 中导入 tensorflow:此包不应在 Python 3 上访问

问题描述

我正在尝试在我的 macbook 中使用 tensorflow 进行研究。我使用 pip3 在系统中安装 tensorflow(不是在虚拟环境中)。

起初,我只是想验证 tensorflow 是否可以通过终端中的 python3 正确导入。但是,有时,我在导入时遇到以下问题。

>>>import tensorflow as tf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/cyan/Library/Python/3.5/lib/python/site-packages/tensorflow/__init__.py", line 24, in <module>
from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "/Users/cyan/Library/Python/3.5/lib/python/site-packages/tensorflow/python/__init__.py", line 47, in <module>
import numpy as np
  File "/Library/Python/2.7/site-packages/numpy/__init__.py", line 142, in <module>
from . import add_newdocs
  File "/Library/Python/2.7/site-packages/numpy/add_newdocs.py", line 13, in <module>
from numpy.lib import add_newdoc
  File "/Library/Python/2.7/site-packages/numpy/lib/__init__.py", line 8, in <module>
from .type_check import *
  File "/Library/Python/2.7/site-packages/numpy/lib/type_check.py", line 11, in <module>
import numpy.core.numeric as _nx
  File "/Library/Python/2.7/site-packages/numpy/core/__init__.py", line 14, in <module>
from . import multiarray
ImportError: dlopen(/Library/Python/2.7/site-packages/numpy/core/multiarray.so, 2): Symbol not found: _PyBuffer_Type
  Referenced from: /Library/Python/2.7/site-packages/numpy/core/multiarray.so
  Expected in: flat namespace in /Library/Python/2.7/site-packages/numpy/core/multiarray.so

只有在执行 python3 之前先运行以下代码才能解决此错误

unset PYTHONPATH

如果我没有取消设置 PYTHONPATH,我在使用检查 pip3 的版本时也会发现错误

pip3 --version

错误如下所示。

>> pip3 --version
Traceback (most recent call last):
  File "/usr/local/bin/pip3", line 6, in <module>
from pip._internal import main
  File "/Library/Python/2.7/site-packages/pip/_internal/__init__.py", line 19, in <module>
from pip._vendor.urllib3.exceptions import DependencyWarning
  File "/Library/Python/2.7/site-packages/pip/_vendor/urllib3/__init__.py", line 8, in <module>
from .connectionpool import (
  File "/Library/Python/2.7/site-packages/pip/_vendor/urllib3/connectionpool.py", line 11, in <module>
from .exceptions import (
  File "/Library/Python/2.7/site-packages/pip/_vendor/urllib3/exceptions.py", line 2, in <module>
from .packages.six.moves.http_client import (
  File "/Library/Python/2.7/site-packages/pip/_vendor/urllib3/packages/six.py", line 203, in load_module
mod = mod._resolve()
  File "/Library/Python/2.7/site-packages/pip/_vendor/urllib3/packages/six.py", line 115, in _resolve
return _import_module(self.mod)
  File "/Library/Python/2.7/site-packages/pip/_vendor/urllib3/packages/six.py", line 82, in _import_module
__import__(name)
  File "/Library/Python/2.7/site-packages/http/__init__.py", line 7, in <module>
raise ImportError('This package should not be accessible on Python 3. '
ImportError: This package should not be accessible on Python 3. Either you are trying to run from the python-future src folder or your installation of python-future is corrupted.

我觉得每次都取消设置 PYTHONPATH 太不方便了,那么有没有解决这个问题的办法呢?我还想在其他文本编辑器中导入 tensorflow,比如 Sublime 和 Pycharm,所以我真的不知道下一步该做什么。

标签: pythonpython-3.xmacostensorflow

解决方案


我尝试了同样的场景。它对我来说很好。在第一个错误中,您的 python 安装似乎搞砸了。如果您在终端中使用 python3,则不应引用 2.7 库。

另外,我认为您不需要每次都取消设置 PYTHONPATH。首先是你不需要设置 PYTHONPATH。似乎安装有问题。

您在 mac 中使用 homebrew 来安装软件包。如果不是,我会说使用自制软件,它会很有魅力。因为它正确添加了依赖关系。

谢谢,阿希什


推荐阅读