Обеспечение совместимости кода Python для работы с версиями 2.7 и 3.6+ - в отношении модуля Queue - PullRequest
0 голосов
/ 26 июня 2018

Я хочу сделать мой общий код, работающий через python2.7, а также python3.6 версии.Синтаксически это просто подразумевает следующее: преобразование отпечатков в консоль типов: print "hello" в print("hello"), что приемлемо в обеих версиях.

Проблема возникает только при импорте одного модуля для модуля очереди.
В Python2.7: from Queue import Queue
В Python3.6: from queue import Queue

Попытка что-то сделатьв разделе import вроде:

try:  
    from Queue import Queue
except ImportError:
    from queue import Queue

Будет ли работать, но на самом деле это не элегантно и некрасиво, есть идеи, как сделать его более разумным?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Это на самом деле не такая уж плохая практика, и ее можно увидеть во многих модулях Python.Когда дело доходит до поддержки как Python2, так и Python3, модуль six может быть очень удобен.

С шестью вы можете импортировать очередь таким образом.

from six.moves import queue

Это будетавтоматически прокси ваш импорт в соответствующее место в зависимости от версии Python.

0 голосов
/ 26 июня 2018

Может быть ниже:

import platform
if platform.python_version().startswith('2.7'):  
    from Queue import Queue
elif platform.python_version().startswith('3.6'):
    from queue import Queue
...