Как убрать источник из двоичных дистрибутивов distutils?

Я хочу создать дистрибутив только по байт-коду из distutils (на самом деле, нет, я знаю, что я делаю ). Используя setuptools и команду bdist_egg, вы можете просто указать параметр --exclude-source. К сожалению, стандартные команды не имеют такой опции.

  • Существует ли простой способ удаления исходных файлов непосредственно перед созданием tar.gz, zip, rpm или deb.
  • Существует ли относительно чистый способ для каждой команды сделать это (например, только для tar.gz или zip).
8
задан Mogsdad 28 August 2015 в 16:00
поделиться

1 ответ

Команда distutils "build_py" - та, которая имеет значение, поскольку она (косвенно) повторно используется всеми командами, создающими дистрибутивы. Если вы переопределите метод byte_compile(files), то получится что-то вроде:

try:
    from setuptools.command.build_py import build_py
except ImportError:
    from distutils.command.build_py import build_py

class build_py(build_py)
   def byte_compile(self, files):
       super(build_py, self).byte_compile(files)
       for file in files:
           if file.endswith('.py'):
               os.unlink(file)

setup(
    ...
    cmdclass = dict(build_py=build_py),
    ...
)

Вы должны быть в состоянии сделать так, чтобы исходные файлы удалялись из дерева сборки до того, как они будут скопированы в каталог "install" (который является временным каталогом при вызове команд bdist).

Примечание: я не тестировал этот код; YMMV.

11
ответ дан 5 December 2019 в 12:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: