IMO, лучший способ - при установке проверить, есть ли у пользователя эта конкретная команда * nix.
Если вы используете distutils для распространения вашего пакета, для его установки вам нужно сделать:
python setup.py build python setup.py install
или просто
python setup.py install (в этом случае установка python.py сборка неявная)
Чтобы проверить, установлена ли команда * nix, вы можете создать подкласс метода сборки в вашем файле setup.py следующим образом:
from distutils.core import setup
from distutils.command.build import build as _build
class build(_build):
description = "Custom Build Process"
user_options= _build.user_options[:]
# You can also define extra options like this :
#user_options.extend([('opt=', None, 'Name of optionnal option')])
def initialize_options(self):
# Initialize here you're extra options... Not needed in your case
#self.opt = None
_build.initialize_options(self)
def finalize_options(self):
# Finalize your options, you can modify value
if self.opt is None :
self.opt = "default value"
_build.finalize_options(self)
def run(self):
# Extra Check
# Enter your code here to verify if the *nix command is present
.................
# Start "classic" Build command
_build.run(self)
setup(
....
# Don't forget to register your custom build command
cmdclass = {'build' : build},
....
)
Но чтоесли пользователь удалит требуемую команду после установки пакета?Чтобы решить эту проблему, единственным «хорошим» решением является использование систем упаковки, таких как deb или rpm, и установка зависимости между командой и вашим пакетом.
Надеюсь, это поможет