2015-05-15 7 views
7

Mein Code läuft perfekt in PyCharm, aber ich habe Fehlermeldungen beim Versuch, es im Terminal zu öffnen. Was ist falsch an meinem Code oder wo habe ich Fehler gemacht?Python 3: AttributeError: 'Modul' Objekt hat kein Attribut '__path__' mit urllib in Terminal

import urllib.request 
with urllib.request.urlopen('http://python.org/') as response: 
    html = response.read() 
    print(html) 

Ausgabe von Terminal:

λ python Desktop\url1.py 
Traceback (most recent call last): 
    File "<frozen importlib._bootstrap>", line 2218, in _find_and_load_unlocked 
AttributeError: 'module' object has no attribute '__path__' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "Desktop\url1.py", line 1, in <module> 
    import urllib.request 
    File "C:\Users\Przemek\Desktop\urllib.py", line 1, in <module> 
    import urllib.request 
ImportError: No module named 'urllib.request'; 'urllib' is not a package 
+0

'Import urllib.request' gültig ist ??? –

+1

@VivekSable, ja für python3. –

Antwort

9

Sie eine Datei namens C:\Users\Przemek\Desktop\urllib.py, müssen Sie es umbenennen. Sie importieren von diesem nicht das eigentliche Modul. Umbenennen Sie C:\Users\Przemek\Desktop\urllib.py und entfernen Sie alle C:\Users\Przemek\Desktop\urllib.pyc.

Es ist nicht die Datei, die Sie ausführen, aber Sie haben die Datei im selben Verzeichnis, daher überprüft Python zuerst das aktuelle Verzeichnis, daher der Fehler.

+0

Ja, das ist es, ich hatte eine Datei namens urllib.py im gleichen Verzeichnis. Danke für Ihre Hilfe! – Przemek

+0

@Przemek. kein Problem, passiert ziemlich oft –

0

Sie können das Standardbibliothekspaket urllib überschatten, indem Sie Ihre Quelldatei urllib.py benennen. Benenne es um!

Die Tatsache, dass dies in Pycharm überhaupt funktioniert, ist eine erstaunliche Ingenieurleistung für die PyCharm-Entwickler!

Sie können hier auch absolute Importe (from __future__ import absolute_import) verwenden; Aber in diesem Fall glaube ich nicht, dass es hilfreich sein wird, da Ihr Startup-Quellenname genau die Bibliothek/das Paket beschattet, die Sie verwenden möchten!

-1

Auch dies:

import urllib.request 
with urllib.request.urlopen('http://python.org/') as response: 

so sein sollte:

import urllib 
with urllib.urlopen('http://python.org/') as response: 
+0

Nicht wirklich, das OP verwendet python3. –

+0

Mein Schlechter, Gedanke 2.7 !! –

Verwandte Themen