In Post-install script with Python setuptools, this answer shows how to make a post-install
command.
I want to make a post-install
command that checks for a version matchup between sub-packages from a mono-repo.
How can I get a list of packages being installed during a post-install
command?
Current Attempt
from pkg_resources import working_set
from setuptools import setup
from setuptools.command.install import install
class PostInstallCommand(install):
REPO_BASE_NAME = "foo"
def run(self) -> None:
install.run(self)
one_subpkg_name = f"{self.REPO_BASE_NAME}-one"
another_subpkg_name = f"{self.REPO_BASE_NAME}-another"
test_subpkg_name = f"{self.REPO_BASE_NAME}-test"
all_versions: list[str] = [
working_set.by_key[one_subpkg_name].version,
working_set.by_key[another_subpkg_name].version,
working_set.by_key[test_subpkg_name].version,
]
if len(set(all_versions)) != 1:
raise NotImplementedError(
f"test package {test_subpkg_name}'s installed versions "
f"{all_versions} have a mismatch."
)
setup(
...,
cmdclass={"install": PostInstallCommand}
)
This solution using pkg_resources.working_set
errors out, it seems working_set
doesn't function at install-time:
...
File "/private/var/folders/41/wlbjqvm94zn1_vbrg9fqff8m0000gn/T/pip-build-env-1iljhvso/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1217, in run_command
super().run_command(command)
File "/private/var/folders/41/wlbjqvm94zn1_vbrg9fqff8m0000gn/T/pip-build-env-1iljhvso/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
cmd_obj.run()
File "<string>", line 39, in run
KeyError: 'foo-one'
from setuptools post-install: get all packages installed to check versions
No comments:
Post a Comment