Кастомізація setuptools в Python
Зіткнувся з необхідністю реалізації власної логіки встановлення пакету. Пошукавши занйшов рішення, яке ґрунтується на перевизначенні метода інсталяції:
Більше тут
setup(
...,
cmdclass={
'install': .....,
}
)
Як видно зі зразка коду власний встановник визначається в секції cmdclass - install і приймає клас (об'єкт класу).
Ось повний зразок:
def get_fonts_loader():
def run(self):
install.do_egg_install(self)
package_dir = os.getcwd()
os.chdir("src/captcha/")
subprocess.call(["git", "clone",
"https://github.com/epadyachok/fonts.git"])
os.chdir(package_dir)
return type('CustomInstaller', (install, object,), {'run' : run})
setup(
name='captcha',
version='4.0',
packages=['captcha'],
package_dir={'captcha':'src/captcha'},
install_requires =[
'Pillow',
'pyaml',
],
long_description=open(join(dirname(__file__), 'README.rst')).read(),
cmdclass={
'install' : get_fonts_loader(),
},
)
Важливим моментом тут є використання метода install.do_egg_install(). За звичай радиться, використовувати install.run(), проте він не встановлює install_requires.Більше тут
Comments
Post a Comment