导入TensorFlow时出现AttributeError: pyparsing无downcaseTokens属性
导入TensorFlow时出现
AttributeError: module 'pyparsing' has no attribute 'downcaseTokens'错误 完整报错信息
AttributeError Traceback (most recent call last) <ipython-input-19-456b3b208783> in <module> ----> 1 import tensorflow as tf /opt/anaconda3/lib/python3.7/site-packages/tensorflow/__init__.py in <module> 39 import sys as _sys 40 ---> 41 from tensorflow.python.tools import module_util as _module_util 42 from tensorflow.python.util.lazy_loader import LazyLoader as _LazyLoader 43 /opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/__init__.py in <module> 46 from tensorflow.python import data 47 from tensorflow.python import distribute ---> 48 from tensorflow.python import keras 49 from tensorflow.python.feature_column import feature_column_lib as feature_column 50 from tensorflow.python.layers import layers /opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/__init__.py in <module> 25 26 # See b/110718070#comment18 for more details about this import. ---> 27 from tensorflow.python.keras import models 28 29 from tensorflow.python.keras.engine.input_layer import Input /opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/models.py in <module> 22 from tensorflow.python.framework import ops 23 from tensorflow.python.keras import backend as K ---> 24 from tensorflow.python.keras import metrics as metrics_module 25 from tensorflow.python.keras import optimizer_v1 26 from tensorflow.python.keras.engine import functional /opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/metrics.py in <module> 38 from tensorflow.python.framework import tensor_spec 39 from tensorflow.python.keras import backend as K ---> 40 from tensorflow.python.keras.engine import base_layer 41 from tensorflow.python.keras.engine import base_layer_utils 42 from tensorflow.python.keras.engine import keras_tensor /opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py in <module> 58 from tensorflow.python.keras.engine import node as node_module 59 from tensorflow.python.keras.mixed_precision import autocast_variable ---> 60 from tensorflow.python.keras.mixed_precision import loss_scale_optimizer 61 from tensorflow.python.keras.mixed_precision import policy 62 from tensorflow.python.keras.saving.saved_model import layer_serialization /opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/mixed_precision/loss_scale_optimizer.py in <module> 18 from __future__ import print_function 19 ---> 20 from tensorflow.python.distribute import collective_all_reduce_strategy 21 from tensorflow.python.distribute import distribution_strategy_context 22 from tensorflow.python.distribute import mirrored_strategy /opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/distribute/collective_all_reduce_strategy.py in <module> 33 from tensorflow.python.distribute import distribute_utils 34 from tensorflow.python.distribute import input_lib ---> 35 from tensorflow.python.distribute import mirrored_strategy 36 from tensorflow.python.distribute import multi_worker_util 37 from tensorflow.python.distribute import numpy_dataset /opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/distribute/mirrored_strategy.py in <module> 32 from tensorflow.python.distribute import reduce_util 33 from tensorflow.python.distribute import values ---> 34 from tensorflow.python.distribute.cluster_resolver import TFConfigClusterResolver 35 from tensorflow.python.eager import context 36 from tensorflow.python.eager import tape /opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/distribute/cluster_resolver/__init__.py in <module> 29 from tensorflow.python.distribute.cluster_resolver.cluster_resolver import SimpleClusterResolver 30 from tensorflow.python.distribute.cluster_resolver.cluster_resolver import UnionClusterResolver ---> 31 from tensorflow.python.distribute.cluster_resolver.gce_cluster_resolver import GCEClusterResolver 32 from tensorflow.python.distribute.cluster_resolver.kubernetes_cluster_resolver import KubernetesClusterResolver 33 from tensorflow.python.distribute.cluster_resolver.slurm_cluster_resolver import SlurmClusterResolver /opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/distribute/cluster_resolver/gce_cluster_resolver.py in <module> 26 _GOOGLE_API_CLIENT_INSTALLED = True 27 try: ---> 28 from googleapiclient import discovery # pylint: disable=g-import-not-at-top 29 from oauth2client.client import GoogleCredentials # pylint: disable=g-import-not-at-top 30 except ImportError: /opt/anaconda3/lib/python3.7/site-packages/googleapiclient/discovery.py in <module> 46 47 # Third-party imports ---> 48 import httplib2 49 import uritemplate 50 import google.api_core.client_options /opt/anaconda3/lib/python3.7/site-packages/httplib2/__init__.py in <module> 50 # idea is to have soft-dependency on any compatible module called socks 51 from . import socks ---> 52 from . import auth 53 from .error import * 54 from .iri2uri import iri2uri /opt/anaconda3/lib/python3.7/site-packages/httplib2/auth.py in <module> 18 19 quoted_string = pp.dblQuotedString.copy().setName("quoted-string").setParseAction(unquote) ---> 20 auth_param_name = token.copy().setName("auth-param-name").addParseAction(pp.downcaseTokens) 21 auth_param = auth_param_name + pp.Suppress("=") + (quoted_string | token) 22 params = pp.Dict(pp.delimitedList(pp.Group(auth_param))) AttributeError: module 'pyparsing' has no attribute 'downcaseTokens'
问题背景
该错误在导入httplib2时触发,原因是旧版本httplib2依赖pyparsing中已弃用的downcaseTokens函数。尝试过以下命令重装旧版本pyparsing,但问题未解决:
!pip install httplib2 !pip install --force-reinstall -v "pyparsing==2.4.2" import pyparsing as pyparse !pip show pyparsing !pip show httplib2 import httplib2 as pp
解决方案
1. 重启Jupyter内核
重装依赖包后,Jupyter内核可能仍在加载旧版本的库,先重启内核再尝试导入TensorFlow。
2. 升级httplib2到兼容版本
新版httplib2已适配pyparsing 3.x,直接升级即可:
!pip install --upgrade httplib2>=0.20.2
3. 使用conda安装(适用于Anaconda环境)
若使用conda管理环境,优先用conda安装避免依赖冲突:
conda install -c conda-forge httplib2 pyparsing
4. 验证修复
执行以下代码确认依赖版本正常:
import pyparsing print(f"pyparsing版本: {pyparsing.__version__}") import httplib2 print("httplib2导入成功") import tensorflow as tf print("TensorFlow导入成功")
内容的提问来源于stack exchange,提问作者user23304335
相关产品推荐
相关产品推荐

