Когда большинство библиотек будут совместимы с Python 3?

Кто-нибудь знает, сколько времени пройдет, прежде чем «почти все» широко используемые библиотеки Python начнут работать с Python 3.0?

Я планирую остаться на 2.X какое-то время, потому что я не хочу начинать портировать вещи заново, а затем обнаруживаю, что какая-то библиотека, на которую я уже полагаюсь, или новая библиотека, которую я мог бы начать использовать, еще не работает с py3k.

Насколько я понимаю, процесс бета-тестирования py3k был разработан специально для того, чтобы дать разработчикам библиотек время на то, чтобы перенести свой материал. Это происходило?

Примеры библиотек, о которых я говорю, - это PIL, numpy / scipy, SQLAlchemy, BeautifulSoup, CherryPy ...

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
13
0
2 251
7

Ответы 7

Приведенные вами примеры, вероятно, будут перенесены очень быстро, поскольку они так широко используются.

Я был бы удивлен, если BeautifulSoup займет больше месяца (на самом деле, я удивлен, что он еще не был перенесен с использованием бета-версий py3k), более сложные вещи, такие как numpy, могут занять больше времени, особенно потому, что 2to3 работает только на python исходники, а не модули C ..

Трудно обобщить - некоторые модули могут никогда не быть портированы, некоторые могут занять дни, другие могут занять годы. Это может закончиться ситуацией вроде «ну, я не портирую свою библиотеку на Python3, никто ее не использует!» / «Ну, я не портирую свой проект на python3, библиотеки еще не обновлены! ", но я надеюсь, что нет!

Думаю, вы поспешили заявить, что NumPy скоро будет портирован. Прошло шесть месяцев, и он все еще не был полностью перенесен на 2.6.

David Locke 02.04.2009 20:37

Я сказал, что портирование numpy может занять «больше времени» ... хотя вы правы, я был немного излишне оптимистичен ... Я не думаю, что даже BeautifulSoup был портирован (я переместил проект, в котором использовал его, в ElementTree из-за этого)

dbr 02.04.2009 22:04

Некоторые комментарии, которые я видел в репозитории CherryPy, заключаются в том, что некоторые изменения в модуле сокетов потребуют обширной переработки логики. Я ожидаю, что CherryPy будет медленнее, чем некоторые другие проекты, которые будут перенесены на 3.0.

теперь работает на Python 3.x
tshepang 24.12.2012 20:35

Фактически, ответ на ваш вопрос зависит от действий стольких разных людей (всех разработчиков библиотек за пределами Python std lib), что я думаю, что никто не может дать вам надежный ответ на ваш вопрос.

Тем не менее, у вас уже были некоторые ответы, и у вас будет больше. Однако мы согласны в одном: как правило, я обычно предлагаю не переносить важные проекты (в основном, связанные с работой) на новые технологии разработки (Python 3, .Net 3.x и т. д.) До тех пор, пока они не появятся. ответы, как на ваш, уже были даны, и многие из начальных ошибок были исправлены.

А вот для домашних или тестовых проектов я готов к обновлениям и экспериментам.

Общая идея плана миграции - остаться на 2.x, а затем постепенно изменить код на 3.x. У вас будет на наименее 1,5 года, чтобы беспокоиться об этом. Конечно, есть проблема с курицей и яйцом.

Я помню, как Адриан (BFDL из django) сказал, что Гвидо дал им 5 лет на перенос.

Упомянутые вами библиотеки будут перенесены, как только кто-то серьезно потратит время на их перенос.

В конкретном случае NumPy / SciPy большая часть кода написана как расширения C. Для расширений C не существует инструмента 2to3, поэтому для переноса кода в формат, который необходимо использовать расширениям C cPython3, потребуется много человеко-часов.

По состоянию на 01.05.2013 все упомянутые вами библиотеки теперь поддерживают Python 3:

Работа по переносу идет постепенно; некоторые основные библиотеки, такие как Django, были портированы сравнительно недавно.

Другие вопросы по теме