Запуск пользовательских сборок setuptools во время установки
мы пытались реализовать компиляцию компаса во время установки build
, но следующий код выполняет компиляцию во время явногоbuild
командовать и нет работает во время.install
#!/usr/bin/env python
import os
import setuptools
from distutils.command.build import build
SETUP_DIR = os.path.dirname(os.path.abspath(__file__))
class BuildCSS(setuptools.Command):
description = 'build CSS from SCSS'
user_options = []
def initialize_options(self):
pass
def run(self):
os.chdir(os.path.join(SETUP_DIR, 'django_project_dir', 'compass_project_dir'))
import platform
if 'Windows' == platform.system():
command = 'compass.bat compile'
else:
command = 'compass compile'
import subprocess
try:
subprocess.check_call(command.split())
except (subprocess.CalledProcessError, OSError):
print 'ERROR: problems with compiling Sass. Is Compass installed?'
raise SystemExit
os.chdir(SETUP_DIR)
def finalize_options(self):
pass
class Build(build):
sub_commands = build.sub_commands + [('build_css', None)]
setuptools.setup(
# Custom attrs here.
cmdclass={
'build': Build,
'build_css': BuildCSS,
},
)
Любые пользовательские инструкции наBuild.run
(например, некоторая печать) нет применяется во времяinstall
тоже, ноdist
экземпляр содержится вcommands
приписывать только мойbuild
экземпляры реализации команды. Невероятно! Но я думаю, что проблема в сложных отношениях междуsetuptools
а такжеdistutils
, Кто-нибудь знает, как заставить пользовательское здание работать во времяinstall
на Python 2.7?
Обновить: Установлено, чтоinstall
определенно нет звонитbuild
команда, но она вызываетbdist_egg
который работаетbuild_ext
, Похоже, я должен реализовать "Компас" построить расширение.