Python パッケージをインストールするだけでなく、setup.py でいくつかのカスタム アクション (init.d スクリプトのインストール、ディレクトリとファイルの作成など) を実行したいです。distutils/setuptools クラスをカスタマイズして、独自のアクションを実行できることを知っています。私が抱えている問題は、パッケージ ディレクトリに cd して "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 から "setup" と "install" をインポートしても同じことが起こります。easy_install でカスタム クラスを実行する方法はありますか?
明確にするために、Buildout や Paver などの余分なものは使用したくありません。