Я хочу, чтобы мой setup.py выполнял некоторые пользовательские действия помимо простой установки пакета Python (например, установка сценария init.d, создание каталогов и файлов и т. д.). Я знаю, что могу настроить классы distutils/setuptools для выполнения моих собственных действий. Проблема, с которой я сталкиваюсь, заключается в том, что все работает, когда я перехожу в каталог пакета и выполняю «python setup.py install», но мои пользовательские классы, похоже, не выполняются, когда я делаю «easy_install mypackage.tar.gz». Вот мой файл setup.py (для проверки создайте пустой файл myfoobar.py в том же каталоге):
import setuptools
from setuptools.command import install as _install
class install(_install.install):
def initialize_options(self):
_install.install.initialize_options(self)
def finalize_options(self):
_install.install.finalize_options(self)
def run(self):
# Why is this never executed when tarball installed with easy_install?
# It does work with: python setup.py install
import pdb;pdb.set_trace()
_install.install.run(self)
setuptools.setup(
name = 'myfoobar',
version = '0.1',
platforms = ['any'],
description = 'Test package',
author = 'Someone',
py_modules = ['myfoobar'],
cmdclass = {'install': install},
)
То же самое происходит, даже если я импортирую «установку» и «установку» из distutils. Любые идеи, как заставить easy_install выполнять мои пользовательские классы?
Чтобы уточнить, я не хочу использовать ничего лишнего, вроде Buildout или Paver.