J'ai le script Python suivant:
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)
Le fichier python fonctionnait bien auparavant, mais maintenant quand j'essaye de l'exécuter, il montre l'erreur suivante:
>>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'
Je ne peux pas vraiment localiser l'erreur. Comment puis-je lire le correctif de l'erreur en fonction du retraçage ci-dessus?
Ici:
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
Le local email.py
dans/Users/name/Desktop/Google Drive/FEBB / serverless/crwlr/shadows celui de stdlib. Maintenant, dans votre module email.py local, vous importez bs4, qui importe html5lib, qui importe xml.sax.saxutils, qui importe urllib.request, qui veut importer http
.
IOW vous vous retrouvez avec une dépendance circulaire (accidentelle). À ce stade, le module http n'est que partiellement importé et n'a pas encore défini de "client", d'où l'erreur.
La solution simple est de renommer votre module "email.py" en quelque chose d'autre, ou (si c'est seulement un script et non un module) de le déplacer hors de votre chemin python.
EDIT: je viens de remarquer que votre code a commencé par importer http
, donc le module http devrait être déjà complètement chargé, donc même si le problème avec votre email.py
le script/module doit être corrigé, cela ne devrait pas conduire à ce problème. Vous avez donc probablement un autre http.py
module ou http
package dans votre sys.path
l'observation de celle de stdlib. Pour déboguer cela, ajoutez cette ligne juste après le import http
une:
print(http)
Cela devrait imprimer quelque chose comme:
<module 'http' from '/some/path/to/a/python/file.pyc`>
Si le chemin n'est pas celui de votre python installez "http/init. Pyc" de stdlib alors vous avez trouvé le contrevenant. Si c'est l'un de vos propres scripts/modules , le correctif est le même que pour email.py
.
Pourrait être Bs4 lève l'exception, veuillez exécuter le script ci-dessous dans celui existant valider l'importation Bs4 fonctionne bien
try:
from bs4 import BeautifulSoup
except Exception as err:
raise ImportError('Bs4 is not imported correctly. - {}'.format(err))