Tôi muốn setup.py của mình thực hiện một số hành động tùy chỉnh ngoài việc cài đặt gói Python (như cài đặt tập lệnh init.d, tạo thư mục và tệp, v.v.) Tôi biết mình có thể tùy chỉnh các lớp distutils/setuptools để làm hành động. Vấn đề tôi gặp phải là mọi thứ hoạt động khi tôi cd vào thư mục gói và làm "python setup.py install", nhưng các lớp tùy chỉnh của tôi dường như không được thực hiện khi tôi làm "easy_install mypackage.tar.gz". Dưới đây là tập tin setup.py của tôi (tạo ra một tập tin myfoobar.py trống trong cùng một thư mục để kiểm tra):Làm thế nào để lệnh easy_install thực thi các lệnh tùy chỉnh trong setup.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},
)
Điều tương tự cũng xảy ra ngay cả khi tôi nhập "thiết lập" và "cài đặt" từ distutils. Bất kỳ ý tưởng làm thế nào tôi có thể làm cho easy_install thực hiện các lớp học tùy chỉnh của tôi?
Để làm rõ, tôi không muốn sử dụng thêm bất kỳ thứ gì, như Buildout hoặc Paver.
Không phải là câu trả lời tôi đã hy vọng, nhưng tôi đoán điều tốt nhất có thể được đưa ra, vì vậy tôi đang trao nó như là câu trả lời. Cảm ơn! –