Ответ 1
Лучший способ - написать пользовательскую команду build_coffeescript и сделать ее подкомандой сборки. Более подробные сведения приведены в других ответах на похожие/повторяющиеся вопросы, например:
Модуль distutils
позволяет включать и устанавливать файлы ресурсов вместе с модулями Python. Как правильно включить их, если файлы ресурсов должны быть созданы во время процесса сборки?
Например, проект представляет собой веб-приложение, которое содержит источники CoffeeScript, которые затем должны быть скомпилированы в JavaScript и включены в пакет Python. Есть ли способ интегрировать это в обычный процесс sdist/bdist?
Лучший способ - написать пользовательскую команду build_coffeescript и сделать ее подкомандой сборки. Более подробные сведения приведены в других ответах на похожие/повторяющиеся вопросы, например:
Я потратил на это справедливое размышление, различные предложения там разбиты по-разному - они нарушают установку зависимостей, или они не работают в pip и т.д. Здесь мое решение:
в setup.py:
from setuptools import setup, find_packages
from setuptools.command.install import install
from distutils.command.install import install as _install
class install_(install):
# inject your own code into this func as you see fit
def run(self):
ret = None
if self.old_and_unmanageable or self.single_version_externally_managed:
ret = _install.run(self)
else:
caller = sys._getframe(2)
caller_module = caller.f_globals.get('__name__','')
caller_name = caller.f_code.co_name
if caller_module != 'distutils.dist' or caller_name!='run_commands':
_install.run(self)
else:
self.do_egg_install()
# This is just an example, a post-install hook
# It a nice way to get at your installed module though
import site
site.addsitedir(self.install_lib)
sys.path.insert(0, self.install_lib)
from mymodule import install_hooks
install_hooks.post_install()
return ret
Затем в вашем вызове функции настройки передайте аргумент arg:
cmdclass={'install': install_}
Вы можете использовать ту же идею для сборки, в отличие от установки, написать себе декоратор, чтобы упростить его и т.д. Это было проверено с помощью pip и прямое вызов "python setup.py install".
НТН А