Porting Python 2 Laws to Python 3A¶
With Python 3 getting the ongoing future of Python while Python 2 is still in effective usage, it is good to have your task available for both significant secretes of Python. This article is supposed to allow you to work out how better to support both Python 2 3 at the same time.
If you’re looking to port an extension module rather than pure Python code, please read Porting Extension Modules to Python 3 .
If you’d like to read through one core Python developer’s deal with why Python 3 has been around since, look for Nick Coghlan’s Python 3 Q A or Brett Cannon’s Why Python 3 exists.
The brief ExplanationA¶
Utilize Pylint to help make sure you do not regress on the Python 3 assistance ( python -m pip install pylint )
Incorporate caniusepython3 discover which of one’s dependencies tend to https://datingmentor.org/nl/military-cupid-overzicht be stopping your using Python 3 ( python -m pip install caniusepython3 )
As soon as your dependencies are no much longer preventing your, use continuous integration to make sure you remain compatible with Python 2 3 (tox enables check against multiple variations of Python; python -m pip install tox )
Consider using recommended static means checking to be sure their type use operates in Python 2 3 (for example. usage mypy to check on your keying in under both Python 2 Python 3; python -m pip install mypy ).
Mention: Using python -m pip apply guarantees that the pip you invoke may be the one put in the Python presently in use, whether it be a system-wide pip or one put in within an online surroundings .
An important facet about encouraging Python 2 3 at the same time is that you could start these days! Regardless if their dependencies aren’t supporting Python 3 yet that will not imply you simply can’t modernize their rule now to aid Python 3. Most changes required to help Python 3 result in cleaner laws using new practices inside Python 2 rule.
Another heavily weighed is modernizing their Python 2 rule to in addition supporting Python 3 is largely computerized obtainable. However need to make some API decisions because of Python 3 clarifying book data versus binary information, the lower-level work is today mainly done for you and hence can at the least enjoy the automatic variations instantly.
Keep those tips in mind even though you read on towards specifics of porting your signal to compliment Python 2 3 simultaneously.
Decrease service for Python 2.6 and olderA¶
As you make Python 2.5 work with Python 3, it is easier any time you simply utilize Python 2.7. If shedding Python 2.5 isn’t an option then six venture makes it possible to support Python 2.5 3 simultaneously ( python -m pip install six ). Perform recognize, however, that almost all the projects listed in this HOWTO may not be accessible to you.
If you’re able to skip Python 2.5 and elderly, then the requisite adjustment towards code should consistently overall look and feeling like idiomatic Python signal. At the worst you’ll have to make use of a function in place of a way sometimes or need to import a function rather than using an integrated one, but if not the overall transformation ought not to feel foreign for your requirements.
You should aim for only promote Python 2.7. Python 2.6 has stopped being freely supported and so is certainly not obtaining bugfixes. This means you’re going to have to run around any dilemmas you discover with Python 2.6. There’s also some knowledge discussed contained in this HOWTO which do not supporting Python 2.6 (age.g., Pylint), which will be much more commonplace as time goes on. It will probably just be simpler for you should you best support the models of Python you have to support.