除了安装 Python 包(如安装 init.d 脚本、创建目录和文件等)之外,我还希望 setup.py 执行一些自定义操作。我知道我可以自定义 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 导入“设置”和“安装”,也会发生同样的事情。有什么想法可以让 easy_install 执行我的自定义类吗?
澄清一下,我不想使用任何额外的东西,比如 Buildout 或 Paver。