Примітка: Наведене нижче рішення працює лише під час встановлення ZIP-коду розповсюдження або tarball або встановлення в редагованому режимі з дерева джерел. Це не буде працювати під час встановлення з двійкового колеса ( .whl
)
Це рішення є більш прозорим:
Ви внесете кілька доповнень, setup.py
і зайвий файл не потрібен.
Також вам потрібно розглянути дві різні інсталяції; один для режиму розробки / редагування, а інший - для режиму встановлення.
Додайте ці два класи, які включають ваш сценарій після встановлення, до setup.py
:
from setuptools import setup
from setuptools.command.develop import develop
from setuptools.command.install import install
class PostDevelopCommand(develop):
"""Post-installation for development mode."""
def run(self):
develop.run(self)
# PUT YOUR POST-INSTALL SCRIPT HERE or CALL A FUNCTION
class PostInstallCommand(install):
"""Post-installation for installation mode."""
def run(self):
install.run(self)
# PUT YOUR POST-INSTALL SCRIPT HERE or CALL A FUNCTION
та вставте cmdclass
аргумент для setup()
функціонування в setup.py
:
setup(
...
cmdclass={
'develop': PostDevelopCommand,
'install': PostInstallCommand,
},
...
)
Ви навіть можете викликати команди оболонки під час встановлення, як у цьому прикладі, який виконує попередню підготовку:
from setuptools import setup
from setuptools.command.develop import develop
from setuptools.command.install import install
from subprocess import check_call
class PreDevelopCommand(develop):
"""Pre-installation for development mode."""
def run(self):
check_call("apt-get install this-package".split())
develop.run(self)
class PreInstallCommand(install):
"""Pre-installation for installation mode."""
def run(self):
check_call("apt-get install this-package".split())
install.run(self)
setup(
...
PS немає жодних точок входу перед встановленням на setuptools. Прочитайте цю дискусію, якщо вам цікаво, чому її немає.