Я хочу, чтобы мой 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},
)
То же самое происходит, даже если я импортирую "setup" и "install" из distutils. Любые идеи, как я мог бы заставить easy_install выполнять мои собственные классы?
Чтобы уточнить, я не хочу использовать ничего лишнего, например, Buildout или Paver.