2 votes

Pourquoi ne puis-je pas importer sans obtenir une erreur concernant un autre fichier python ? ("module partiellement initialisé n'a pas d'attribut")

J'essaie d'importer le module de requêtes pour me familiariser avec bs4, mais le module de requêtes dans le fichier sur lequel je travaille actuellement est grisé et n'est donc pas reconnu comme un module. Lorsque je lance le programme presque vide, j'obtiens une erreur pour un fichier python sans rapport avec mon projet.

Dois-je stocker individuellement chaque fichier python que je crée dans un dossier distinct ? Ces deux fichiers se trouvent dans le même dossier de projet.

import requests

response = get('https://www.newegg.ca/p/N82E16868105274')

print(response.raise_for_status())

Erreur :

  Traceback (most recent call last):
      File "C:\Users\Denze\MyPythonScripts\Webscraping learning\beautifulsoup tests.py", line 1, in <module>
        import requests
      File "C:\Users\Denze\MyPythonScripts\requests.py", line 3, in <module>
        res = requests.get('')
    AttributeError: partially initialized module 'requests' has no attribute 'get' (most likely due to a circular import)

    Process finished with exit code 1

L'autre code en question qui, je pense, est à l'origine de mon erreur :

import requests

res = requests.get('')

playFile = ('TestDownload.txt', 'wb')

for chunk in res.iter_content(100000):
    playFile.write(chunk)

playFile.close()

0voto

Błażej Michalik Points 1442

Vous avez une collision de noms. Vous n'importez pas le requests vous importez votre script.

Vous vouliez faire ce qui suit avec vos importations :

MyPythonScripts\beautifulsoup tests.py 
     requests.get() (the library)

Ce que vous faites à la place est :

MyPythonScripts\beautifulsoup tests.py 
     MyPythonScripts\requests.py 
     MyPythonScripts\requests.py .get() (the same file again)

C'est l'"importation circulaire" qui est mentionnée dans la traceback. Le module s'importe lui-même et tente d'utiliser un attribut qui n'est pas présent avant la fin de son "exécution", et l'interpréteur pense que c'est dû à l'initialisation inachevée.

Raname MyPythonScripts\requests.py à quelque chose d'autre et ça devrait fonctionner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X