Советы по обновлению до python 3.0? [Дубликат]

This question already has an answer here:

How are you planning on handling the migration to Python 3? 7 answers

Таким образом, в финальных версиях Python 3.0 (а теперь и в 3.1) многие сталкиваются с беспокойством о том, как выполнить обновление, не потеряв половину своей базы кода из-за обратной несовместимости.

Каковы лучшие советы людей, как избежать многих ловушек, которые почти неизбежно возникнут в результате перехода на Python следующего поколения?

Вероятно, хорошее место для начала - это использовать 2to3 для преобразования вашего кода Python 2.x в 3.x & quot; :-)

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

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

Как вы планируете обрабатывать переход на Python 3?, Проверьте ответы там.

Также естьраздел в Python Wiki о переносе приложений на Python 3.x

Примечания к выпуску для python 3.0 содержит раздел о портировании. Я цитирую советы там:

(Prerequisite:) Start with excellent test coverage. Port to Python 2.6. This should be no more work than the average por from Python 2.x to Python 2.(x+1). Make sure all your tests pass. (Still using 2.6:) Turn on the -3 command line switch. This enables warnings about features that will be removed (or change) in 3.0. Run your test suite again, and fix code that you get warnings about until there are no warnings left, and all your tests still pass. Run the 2to3 source-to-source translator over your source code tree. (See 2to3 - Automated Python 2 to 3 code translation for more on this tool.) Run the result of the translation under Python 3.0. Manually fix up any remaining issues, fixing problems until all tests pass again.

It is not recommended to try to write source code that runs unchanged under both Python 2.6 and 3.0; you’d have to use a very contorted coding style, e.g. avoiding print statements, metaclasses, and much more. If you are maintaining a library that needs to support both Python 2.6 and Python 3.0, the best approach is to modify step 3 above by editing the 2.6 version of the source code and running the 2to3 translator again, rather than editing the 3.0 version of the source code.

 02 июл. 2009 г., 06:07
Я бы изменил это последнее утверждение, чтобы сказать 2.x вместо 2.6. 2.6 имеет много прямой совместимости, включая новую функцию печати, так что вам вообще не нужно ее избегать.

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

& quot; Если он не сломался, не исправляйте его! & quot;

 02 июл. 2009 г., 17:26
То же самое. Слишком много библиотек, от которых я зависел, все еще работают на Python 2.5. До тех пор, пока библиотеки не переместятся и не будут проверены как стабильные, я остаюсь на месте.

http://python3porting.com/

Короче:

Make sure all your third party libraries are available for Python 3. Prepare your code by removing common ambiguities: Use // if you really want integer division. Make sure you flag binary files with the 'b' flag when you open them, to clearly indicate if you mean the data to be binary or not. The higher your test coverage is, the better. Make sure it runs without warnings under "Python 2.7 -3". Now run 2to3. Fix any bugs.

Вот и все, более или менее.

 11 авг. 2015 г., 00:50
мертвая ссылка на видео

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