Python 3.12 does not provide the imp module, so just add a version placeholder that can be substituted in the template. --- ./setup.py.orig 2023-09-29 10:39:49.179745785 -0400 +++ ./setup.py 2023-09-29 10:40:17.005916409 -0400 @@ -5,7 +5,7 @@ PROJ_METADATA = '%s.json' % PROJ_NAME -import os, json, imp +import os, json here = os.path.abspath(os.path.dirname(__file__)) proj_info = json.loads(open(os.path.join(here, PROJ_METADATA), encoding='utf-8').read()) try: @@ -13,7 +13,7 @@ except: README = "" CHANGELOG = open(os.path.join(here, 'CHANGELOG.rst'), encoding='utf-8').read() -VERSION = imp.load_source('version', os.path.join(here, 'src/%s/version.py' % PACKAGE_NAME)).__version__ +VERSION = '@@VERSION@@' from setuptools import setup, find_packages setup(