75 lines
3.2 KiB
ReStructuredText
75 lines
3.2 KiB
ReStructuredText
.. _guide_migration_py3:
|
||
|
||
Migrating to Python 3
|
||
=====================
|
||
|
||
Python 2.7 was deprecated by the `Python Software Foundation <https://www.python.org/psf-landing/>`_
|
||
on January 1, 2020 following a multi-year process of phasing it out. Because of this, AWS has
|
||
deprecated support for Python 2.7, which means that releases of Boto3 issued after the deprecation
|
||
date will no longer work on Python 2.7.
|
||
|
||
This affects both modules that comprise the AWS SDK for Python: Botocore (the underlying low-level
|
||
module) and Boto3 (which implements the API functionality and higher-level features).
|
||
|
||
Timeline
|
||
--------
|
||
Going forward, all projects using Boto3 need to transition to Python 3.6 or later. Boto3 and
|
||
Botocore ended support for Python 3.4 and 3.5 on Feb 21, 2021, and support for Python 2.7
|
||
ended July 15, 2021.
|
||
|
||
Updating your project to use Python 3
|
||
-------------------------------------
|
||
|
||
Before you begin to update your project and environment, make sure you’ve installed or updated to
|
||
Python 3.6 or later as described in :ref:`upgrade to Python 3 <quickstart_install_python>`. You can
|
||
get Python from the `PSF web site <https://www.python.org/downloads>`_ or using your local package
|
||
manager.
|
||
|
||
After you have installed Python 3, you can upgrade the SDK. To do so, you need to update the Boto3
|
||
Python package. You can do this globally or within your virtual environment if you use one for your
|
||
project.
|
||
|
||
To update the AWS SDK for Python
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
1. Uninstall the currently installed copies of Boto3 and Botocore::
|
||
|
||
$ python -m pip uninstall boto3 botocore
|
||
|
||
2. Install the new version of Boto3. This will also install Botocore, which it requires::
|
||
|
||
$ python3 -m pip install boto3
|
||
|
||
3. (Optional) Verify that the SDK is using the correct version of Python::
|
||
|
||
$ python3 -c "import boto3, sys; print(f'{sys.version} \nboto3: {boto3.__version__}')"
|
||
3.8.6 (default, Jan 7 2021, 17:11:21)
|
||
[GCC 7.3.1 20180712 (Red Hat 7.3.1-11)]
|
||
boto3: 1.16.15
|
||
|
||
If you're unable to upgrade to Python 3
|
||
---------------------------------------
|
||
|
||
It may be that you're unable to upgrade to Python 3, for example if you have a large project that's
|
||
heavily dependent on syntax or features that no longer work as desired in Python 3. It's also
|
||
possible that you need to postpone the Python transition while you finish updates to your code.
|
||
|
||
Under these circumstances, you should plan on pinning your project's install of Boto3 to the last
|
||
release that supports the Python version you use, then not updating Boto3 further. You can then keep
|
||
using an existing installation of Boto3 on Python 2, even after its deprecation date, with the
|
||
understanding that deprecated versions of Boto3 will not receive further feature or security
|
||
updates.
|
||
|
||
pip-based installations
|
||
~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
If you installed Boto3 using :command:`pip` 10.0 or later, you'll automatically stop receiving Boto3
|
||
updates after the last Python 2 compatible version of the SDK is installed. If you're using an older
|
||
version of :command:`pip`, you need to pin your Boto3 install to no later than version 1.17.
|
||
|
||
Other installation methods
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
If you installed Boto3 and Botocore from source or by any other method, be sure to download and
|
||
install a version released prior to the Python 2.7 deprecation date.
|