web-dev-qa-db-ja.com

Pythonのメールモジュールをまったくインポートできません

メールモジュールをまったくインポートできないようです。実行するたびにエラーが発生します。 Pythonと再インストールを試みましたが、電子メールモジュールが機能しません。「pip install email」を実行しましたが、まだ壊れています。Windows7 Home Premiumを使用しています。 x64、Pythonのx86バージョンを実行。

発生することは次のとおりです。

c:\Users\Nicholas\Desktop>python
ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:21:10) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import email
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "email.py", line 1, in <module>
    import smtplib
  File "C:\Python27\lib\smtplib.py", line 46, in <module>
    import email.utils
ImportError: No module named utils
>>>

編集:私はPythonを試しました。ActivePythonが機能するかもしれないと思っています。とにかくpythonとそのすべてのデータと多分100%新鮮に始めますか?

42
Nicholas

email.pyという名前のファイルがあるようです。 Python標準ライブラリモジュールと同じ名前のファイル名は使用しないでください。通常、作業ディレクトリはモジュールをインポートするための検索パスPythonそのため、作業ディレクトリ内のファイルは、標準ライブラリ内の同じ名前のモジュールをオーバーライドします。

手がかり:トレースバックのパス名に注意してください

  File "email.py", line 1, in <module>
    import smtplib
  File "C:\Python27\lib\smtplib.py", line 46, in <module>
    import email.utils

ところで、これは非常に一般的なエラーです。 Python標準ドキュメントセットの優れたチュートリアルは、それについて説明しています here

106
Ned Deily

私はちょうどこのエラーに出くわしたので、自分のソリューションを共有したいと思いました。私の場合、ディレクトリにemail.pyという名前のファイルがありました。これにより、Pythonのemail.pyと私のファイルの間に名前の競合が発生しました。 smtplibがimport email.utilsを試みたとき、それは私のファイルを見て、何も見つかりませんでした。 email.pyのコピーの名前をmyemail.pyに変更した後、すべてがチャームのように機能しました。

34

私もこのエラーに遭遇しました。 email.pyを別の名前に変更することに加えて、remove email.pyc(Cに注意)ファイルも必要です。その後、すべてが順調です。皆さんありがとう!

5
Jose Leon

プロジェクトディレクトリにemail.pyという名前のファイルがあったため、この問題も取得しました。 import urllib.requestができませんでした。ファイル名email.pyをemailtest.pyに変更すると、エラーはなくなりました。 python coreファイル名と同じ名前を使用するべきではありません。

3
Raihan