2017-09-22 6 views
6

マイインポートという名前しかし、私は、コードないモジュールのPythonモジュール</p> <pre><code>import Queue from threading import Thread import time </code></pre> <p>の「キュー」

File "b1.py", line 3, in <module> 
    import Queue 
ModuleNotFoundError: No module named 'Queue' 

を実行したときに、私はSOに同様のスレッドを見てきましたが、ナッシングは私

/usr/bin/python3 --version 
Python 3.5.2 
[email protected]:~$ python --version 
Python 3.6.0 :: Anaconda custom (64-bit) 
のために働きます

の場合
from multiprocessing import Queue 

私はこの

AttributeError: 'Queue' object has no attribute 'join' 

は、私は次は何を試してみてください持っているよりも何もインポートproblem.Butはありませんか? Pythonの2オン

+2

インポートqueue' –

+0

'輸入queue''試すことができます。 –

+0

はい、それは今動作します! – MishaVacic

答えて

8

は、モジュールはPythonの3の上に、それwas renamedそれqueue作り、PEP8 guidelines(モジュール名のすべて小文字)に従うために、Queue名前が付けられます。 クラスは、すべてのバージョン(PEP8以降)にはQueueのままです。

通常、あなたがバージョンポータブル輸入を書きたいの方法は何をするだろう:

try: 
    import queue 
except ImportError: 
    import Queue as queue 
+0

これは、 'ImportError'の代わりに' ModuleNotFoundError'を送出するので、Python 3.6ではうまくいきません。この例外タイプはそこに存在しなかったので、 'except ModuleNotFoundError'への変更は古いバージョンでは再び機能しません。 Checkmate:D – Jeronimo

+0

@Jeronimo:うまく動作します。 ['ModuleNotFoundError'は' ImportError'のサブクラスです。](https://docs.python.org/3/library/exceptions.html#ModuleNotFoundError)、 'ImportError'をキャッチすると' ModuleNotFoundError'もキャッチされます。 ImportErrorは細分化されていません(例:それは問題がモジュールの不足ではなく名前シャドーイングのモジュールであるとは言えませんが)うまくいくでしょう。また、私はPy3の名前を優先順位付けしているので、 'ImportError'が生成される場所はPy2だけなので、二重です。 – ShadowRanger

+0

ああ、あなたは正しい。最近私のコードでエラーが発生したことを覚えていると思いましたが、今すぐ見つけることができないので、他の何かがソースであったに違いありません。 – Jeronimo

関連する問題

 関連する問題