私のコードはPyCharmで完全に実行されていますが、ターミナルで開こうとするとエラーメッセージが表示されます。私のコードの何が問題になっていますか、またはどこでミスをしましたか?
import urllib.request
with urllib.request.urlopen('http://python.org/') as response:
html = response.read()
print(html)
端末からの出力:
λ 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
ファイルをC:\Users\Przemek\Desktop\urllib.py
と呼びました。名前を変更する必要があります。実際のモジュールではなく、そこからインポートしています。 C:\Users\Przemek\Desktop\urllib.py
の名前を変更し、C:\Users\Przemek\Desktop\urllib.pyc
を削除します。
実行中のファイルではありませんが、同じディレクトリにファイルがあるため、pythonは最初に現在のディレクトリをチェックするため、エラーが発生します。
ソースファイルにurllib.py
という名前を付けて、標準ライブラリパッケージurllib
をシャドウイングします。名前を変更してください!
これがPycharmでまったく機能するという事実は、PyCharm開発者にとってエンジニアリングの驚くべき偉業です!
ここでは絶対インポート(from __future__ import absolute_import
)も使用できます。しかし、この場合、起動ソース名が、使用しようとしているライブラリ/パッケージを覆い隠しているため、役に立たないと思います!