2017-08-03 5 views
0

こんにちは、私は基本的なPythonのunittestのコードの下に書かれている:エラーは3.6.1

import unittest 

class Phonebooktest(unittest.TestCase): 

    def test_create_phonebook(): 
     print("welcome to python") 



if __name__ == '__main__': 
    unittest.main()` 

は、私はエラーを取得しています:

25 
/2 
10>>2 2 
Traceback (most recent call last): 
    File "test_phone_book.py", line 1, in <module> 
    import unittest 
    File "C:\Users\XXXXX\AppData\Local\Programs\Python\Python36\lib\unittest\__init__.py", line 58, in <module> 
    from .result import TestResult 
    File "C:\Users\XXXXX\AppData\Local\Programs\Python\Python36\lib\unittest\result.py", line 5, in <module> 
    import traceback 
    File "C:\Users\XXXXX\AppData\Local\Programs\Python\Python36\lib\traceback.py", line 3, in <module> 
    import collections 
    File "C:\Users\XXXXX\AppData\Local\Programs\Python\Python36\lib\collections\__init__.py", line 26, in <module> 
    from operator import itemgetter as _itemgetter, eq as _eq 
ImportError: cannot import name 'itemgetter' 

誰かがこのエラーを解決するために私を助けてください。

+0

direcotryの 'test_phone_book.py'が存在するファイルの名前は' operator.py'ですか? –

+0

はいoperator.pyファイルがあります。私はそれを削除し、それが働いてみました。なぜこれが起こったのか分かりますか? – jaibalaji

+0

[スクリプトからインストールされたパッケージをインポートすると、AttributeError:モジュールに属性がありません "または" ImportError:名前をインポートできません "](https://stackoverflow.com/questions/36250353/importing-installed-package-from-script) -raises-attributeerror-module-has-no-at) –

答えて

1

おそらく、ディレクトリにoperator.pyという名前のファイルがあります。残念なことに、その名前はPythonの標準ライブラリであるoperatorモジュールと競合します。実際に

、最後の2行を見て、のいずれかが言う:

それは operatorから itemgetterを取得しようとしていますが、作業ディレクトリに operator.pyファイルを持っているので、それはしようと提案し
from operator import itemgetter as _itemgetter, eq as _eq 
    ImportError: cannot import name 'itemgetter' 

Pythonの標準ライブラリではなく、そのファイルからitemgetterをインポートします。

operator.pyの名前を変更して何が起こるかを確認してください。

+1

ありがとうございました。 :) – jaibalaji

関連する問題