2017-12-24 2 views
0

Warum erhalte ich ImportError: cannot import name 'BeautifulSoup'Import: kann nicht Namen importieren 'BeautifulSoup'

line 1, in <module> 
     from bs4 import BeautifulSoup 
    ImportError: cannot import name 'BeautifulSoup' 

Ist es installiert?

pip install --upgrade --force-reinstall beautifulsoup4 
Collecting beautifulsoup4 
    Using cached beautifulsoup4-4.6.0-py3-none-any.whl 
Installing collected packages: beautifulsoup4 
    Found existing installation: beautifulsoup4 4.6.0 
    Uninstalling beautifulsoup4-4.6.0: 
     Successfully uninstalled beautifulsoup4-4.6.0 
Successfully installed beautifulsoup4-4.6.0 

Erscheint so.

+0

Nachdem Sie beautifulsoup4 installiert haben, haben Sie versucht, das Terminal zu verlassen und dann wieder zurückzukehren. – barryjones

+0

Haben Sie Ihre Datei 'bs4.py' zufällig genannt? Versuchen Sie es umzubenennen. –

+1

@BurhanKhalid Yeap. Ich habe gerade gelöscht, dass jetzt, Moral der Geschichte, nie eine Python-Datei bs4.py nennen. –

Antwort

1

Sie benennen Sie Ihre Datei nicht bs4.py


Python hat eine Liste der Orte, für Module überprüfen wird, von der documentation:

When a module named spam is imported, the interpreter first searches for a built-in module with that name. If not found, it then searches for a file named spam.py in a list of directories given by the variable sys.path . sys.path is initialized from these locations:

  • the directory containing the input script (or the current directory).
  • PYTHONPATH (a list of directory names, with the same syntax as the shell variable PATH).
  • the installation-dependent default.

In Ihrem Fall eine Datei gefunden genannt bs4.py im selben Verzeichnis, in dem es ausgeführt wurde, und da es dem entspricht, was Sie zu importieren versuchen - Python hat die Suche nach den restlichen Verzeichnissen beendet.

Da Ihr eigenes bs4.py das Objekt BeautifulSoup nicht enthält, erhalten Sie den Importfehler.

Diese Art von Namenskonflikten kann durch sorgfältige Benennung Ihrer Dateien vermieden werden; In einigen Fällen ist es nützlich (zum Beispiel wenn Sie versuchen, einige Module zu überspielen oder zu überschreiben); aber das ist hier nicht der Fall.

Verwandte Themen