3

I am trying to make a system-wide installation of my Python module with setuptools.

Let's say I have a file that has to have different content depending on whether I install in production or development environment.

One way I think I found, is from Post-install script with Python setuptools . As far as I understand, I could make some additional post-install actions and in them copy the correct version of the file depending on whether it is devel or install, however, how do I know from within the method, which directories to use for source and dest?

Gnudiff
  • 4,297
  • 1
  • 24
  • 25
  • Boo, don't do this the people using your paackages will curse you - potentially. Maybe use extras_require instead? – Att Righ Oct 26 '22 at 16:05

1 Answers1

1

how do I know from within the method, which directories to use for source and dest?

This is not really well documented. You will have to read some of distutils and setuptools code. I believe the destination for the develop should be self.install_dir and self.install_lib for the install command. For the source, I believe it should be good enough to assume a path relative to the location of your setup.py script.

Something like this (untested):

class develop(setuptools.command.develop.develop):
    def run(self):
        super().run(self)
        self.copy_file('src/package/develop.bin', self.install_dir + 'package/data.bin')

class install(setuptools.command.install.install):
    def run(self):
        super().run(self)
        self.copy_file('src/package/install.bin', self.install_lib + 'package/data.bin')
sinoroc
  • 18,409
  • 2
  • 39
  • 70