Ах, хорошо, ты прав. Я думал, что вспомнил, что это вызвало ошибку в моем коде недавно, но я не могу найти это прямо сейчас, поэтому что-то еще должно быть источником тогда

мпорт модулей Python

import Queue
from threading import Thread
import time

Но когда я запускаю код

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'

Что я должен попробовать дальше?

 Jean-François Fabre22 сент. 2017 г., 13:39
ты можешь попробоватьimport queue
 ShadowRanger22 сент. 2017 г., 13:56
@ Жан-Франсуа Фабр: Думаю? Этот вопрос - своего рода ужасная двойная цель; большинство вопросов, нацеленных на дубликат, похожи на этот, а не на проблемы с именами написанных лично модулейqueue.py (конечная проблема там), но пытаетсяimport Queue на Python 3 (проблема здесь).
 Jean-François Fabre22 сент. 2017 г., 13:53
@ShadowRanger, так что вы предлагаете открыть снова? что бы пролетело мимо меня, так как этот конкретный вопрос яснее. Ваш комментарий (с материалами PEP8) даст хороший ответ.
 ShadowRanger22 сент. 2017 г., 13:40
Чтобы объяснить: на Python 2 модуль называетсяQueueв Python 3 он был переименован в соответствии с рекомендациями PEP8 (все строчные буквы для имен модулей), что делает егоqueue,класс остаткиQueue на всех версиях (после PEP8).
 ShadowRanger22 сент. 2017 г., 13:50
@ Жан-Франсуа Фабр: К сожалению, на описанную проблему лучше всего ответить принятым ответом.requests модуль уже пытается импортировать изqueueзатем отступая кQueue если это не удастся. Их проблема вовсе не в версии Python. Предложение использоватьmultiprocessing.Queue это действительно ужасный ответ (вам придется обезьяна-патчrequestsи это повлекло бы за собой замедление всего, и ломку, если были вовлечены неубираемые вещи); каждый ответ на этот вопросКроме принятый был опубликован людьми, не обращающими внимания на актуальную проблему ОП.

Ответы на вопрос(1)

Решение Вопроса

Queueна Python 3 этобыл переименован следитьРуководство по PEP8 (все строчные для имен модулей), делая егоqueue,класс остаткиQueue на всех версиях (после PEP8).

Как правило, вы должны написать способ импорта переносимых версий:

try:
    import queue
except ImportError:
    import Queue as queue
 Jeronimo22 сент. 2017 г., 14:22
Это не работает для Python 3.6, так как теперь выдаетModuleNotFoundError вместоImportError, Изменение наexcept ModuleNotFoundError в этом случае снова не будет работать для более старых версий, так как этот тип исключения там не существует. Поставить мат: D
 Jeronimo22 сент. 2017 г., 14:42
Ах, хорошо, ты прав. Я думал, что вспомнил, что это вызвало ошибку в моем коде недавно, но я не могу найти это прямо сейчас, поэтому что-то еще должно быть источником тогда
 ShadowRanger22 сент. 2017 г., 14:28
@Jeronimo: все работает отличноModuleNotFoundError это подклассImportErrorтак ловитImportError также ловитModuleNotFoundError. ImportError не такой детальный (например, он не может сказать вам, что проблема в модуле теневого копирования имен, а не в отсутствии модуля), но он будет работать. Кроме того, так как я расставил приоритеты для имени Py3, единственное местоImportError будет поднят это Py2, так что это вдвойне хорошо.

Ваш ответ на вопрос