python - python文件显示AttributeError:模块'http'没有属性'client'
问题描述
我有以下 Python 脚本:
import http
import requests
from bs4 import BeautifulSoup
import urllib3
import pyrebase
import numpy as np
import yagmail
import time
from datetime import datetime, timedelta
import sys
import logging
import colorama
import csv
from random import randint
from numpy import genfromtxt
import sched, time
import threading
import http.client
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
# Fetch the service account key JSON file contents
cred = credentials.Certificate('service-account-credentials.json')
# Initialize the app with a service account, granting admin privileges
firebase_admin.initialize_app(cred, {
'databaseURL': 'https://werrwrrw-catalogue.firebaseio.com'
})
config = {
"apiKey": "BiXzaSdwhjwrhwjjrhwr",
"authDomain": "whjwrhwjjrhwr.firebaseapp.com",
"databaseURL": "https://whjwrhwjjrhwr.firebaseio.com",
"projectId": "whjwrhwjjrhwr",
"storageBucket": "rewrrrrr.appspot.com",
"messagingSenderId": "606543434441"
}
firebaseuser = pyrebase.initialize_app(config)
auth = firebaseuser.auth()
dbuser = firebaseuser.database()
subref = db.reference('Subcribers').get()
for key, val in subref.items():
subcriber_email = val['Email']
print(key,subcriber_email)
python 文件之前运行良好,但现在当我尝试运行它时,它显示以下错误:
>>Traceback (most recent call last):
File "fax.py", line 1, in <module>
import requests
File "/Users/name/anaconda/lib/python3.6/site-packages/requests/__init__.py", line 43, in <module>
import urllib3
File "/Users/name/anaconda/lib/python3.6/site-packages/urllib3/__init__.py", line 8, in <module>
from .connectionpool import (
File "/Users/name/anaconda/lib/python3.6/site-packages/urllib3/connectionpool.py", line 11, in <module>
from .exceptions import (
File "/Users/name/anaconda/lib/python3.6/site-packages/urllib3/exceptions.py", line 2, in <module>
from .packages.six.moves.http_client import (
File "<frozen importlib._bootstrap>", line 961, in _find_and_load
File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 646, in _load_unlocked
File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible
File "/Users/name/anaconda/lib/python3.6/site-packages/urllib3/packages/six.py", line 203, in load_module
mod = mod._resolve()
File "/Users/name/anaconda/lib/python3.6/site-packages/urllib3/packages/six.py", line 115, in _resolve
return _import_module(self.mod)
File "/Users/name/anaconda/lib/python3.6/site-packages/urllib3/packages/six.py", line 82, in _import_module
__import__(name)
File "/Users/name/anaconda/lib/python3.6/http/client.py", line 71, in <module>
import email.parser
File "/Users/name/Desktop/Google Drive/FEBB/serverless/crwlr/email.py", line 3, in <module>
from bs4 import BeautifulSoup
File "/Users/name/anaconda/lib/python3.6/site-packages/bs4/__init__.py", line 35, in <module>
from .builder import builder_registry, ParserRejectedMarkup
File "/Users/name/anaconda/lib/python3.6/site-packages/bs4/builder/__init__.py", line 323, in <module>
from . import _html5lib
File "/Users/name/anaconda/lib/python3.6/site-packages/bs4/builder/_html5lib.py", line 20, in <module>
import html5lib
File "/Users/name/anaconda/lib/python3.6/site-packages/html5lib/__init__.py", line 19, in <module>
from .serializer import serialize
File "/Users/name/anaconda/lib/python3.6/site-packages/html5lib/serializer/__init__.py", line 5, in <module>
from .htmlserializer import HTMLSerializer
File "/Users/name/anaconda/lib/python3.6/site-packages/html5lib/serializer/htmlserializer.py", line 15, in <module>
from xml.sax.saxutils import escape
File "/Users/name/anaconda/lib/python3.6/xml/sax/saxutils.py", line 6, in <module>
import os, urllib.parse, urllib.request
File "/Users/name/anaconda/lib/python3.6/urllib/request.py", line 1350, in <module>
if hasattr(http.client, 'HTTPSConnection'):
AttributeError: module 'http' has no attribute 'client'
我无法确定错误。如何根据上面的回溯阅读修复错误?
解决方案
这里:
File "/Users/name/anaconda/lib/python3.6/http/client.py", line 71, in <module>
import email.parser
File "/Users/name/Desktop/Google Drive/FEBB/serverless/crwlr/email.py"
from bs4 import BeautifulSoup
email.py
/Users/name/Desktop/Google Drive/FEBB/serverless/crwlr/ 中的本地会影响 stdlib 的本地化。现在在您的本地 email.py 模块中,您正在导入 bs4,它会导入 html5lib,它会导入 xml.sax.saxutils,它会导入 urllib.request,它要导入http
.
IOW 你最终会得到一个(意外的)循环依赖。此时,http 模块仅部分导入,尚未定义“客户端”,因此出现错误。
简单的解决方案是将您的“email.py”模块重命名为其他名称,或者(如果它只是一个脚本而不是模块)将它移出您的 pythonpath。
编辑:我刚刚注意到你的代码是从 importing 开始的http
,所以 http 模块应该已经完全加载,所以即使你的email.py
脚本/模块的问题需要修复,这也不应该导致这个问题。因此,您可能有另一个http.py
模块或http
包在您sys.path
的 stdlib 的影子中。要对此进行调试,请在这一行之后添加这一行import http
:
print(http)
这应该打印如下内容:
<module 'http' from '/some/path/to/a/python/file.pyc`>
如果路径不是您的 python 安装 stdlib 的“http/ init .pyc”的路径,那么您找到了违规者。如果它是您自己的脚本/模块之一,则修复与 for 相同email.py
。
推荐阅读
- ansible - 无法使用gather_facts true运行ansible playbook
- google-drive-api - 如何将文件从 jupyter 实验室复制到 Google 驱动器
- bash - BASH:如何将具有导出环境变量的文件聚合到属性文件
- coded-ui-tests - 无法从 codedui 中的 WinList 中选择项目
- python - Python Web 服务 - 仅允许 TLS 1.1 和 1.2
- excel - 组合 3 个 VBA 代码并将其作为单个代码运行
- hazelcast - spring boot 中的 cacheput-annotation-not-updating-cache-hazelcast-cache
- artificial-intelligence - 在股票交易中如何保证股票数量
- java - 如何找出房间数据库中是否已存在记录
- c++ - 迭代数组c ++中的集合