Skip to content

Cloudlift is Breaking in Python 3.12 #162

@tasnimzotder

Description

@tasnimzotder

Issue Description

Cloudlift fails to run on Python 3.12 due to dependency issues related to the removed distutils module. The error manifests in two ways:

  1. Initially fails with six.moves import error.
  2. After removing six dependency, fails with missing distutils module error.

Root Cause

Steps to Reproduce

  1. Create a Python 3.12 virtual environment
  2. Run pip install .
  3. Execute cloudlift --version

image

Now if we remove six==1.10.0 from the dependencies, and then reinstall and run cloudlift version check, we get:

image

Solution

Add setuptools as a dependency, which provides the removed distutils functionality. With updated requirements.txt:

image

The changed requirements.txt file should look like the following:

boto3==1.34.111  
awscli==1.32.111  
certifi==2017.7.27.1
cfn-flip==1.0.3
chardet==3.0.4
click==6.7
colorclass==2.2.2
dictdiffer==0.7.0
docutils==0.14
future==0.16.0
futures==3.1.1
idna==2.6
jmespath==0.9.3
jsonschema==2.6.0
python-dateutil==2.8.2
requests>=2.20.0
stringcase==1.0.6
terminaltables==3.1.0
troposphere==4.5.2
awacs==2.4.0
botocore==1.34.111
setuptools==75.6.0 # Added to provide distutils functionality

# Removed: six==1.10.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions