【发布时间】:2010-11-29 14:54:46
【问题描述】:
我希望 setup.py 执行一些自定义操作,而不仅仅是安装 Python 包(例如安装 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。
【问题讨论】:
标签: python setuptools easy-install