如何从distutils二进制发行版中剥离源代码?

Dra*_*mon 8 python distutils bytecode

我想从distutils创建一个只有字节码的发行版(不是真的,我这样做;我知道我在做什么).使用setuptools和bdist_egg命令,您只需提供--exclude-source参数即可.不幸的是,标准命令没有这样的选项.

  • 是否有一种简单的方法可以在创建tar.gz,zip,rpm或deb之前去除源文件.
  • 是否有相对干净的按命令方式(例如,仅用于tar.gz或zip).

PJ *_*Eby 11

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),
    ...
)
Run Code Online (Sandbox Code Playgroud)

您应该能够创建它,以便在将源文件复制到"install"目录(当bdist命令调用它们时是临时目录)之前从构建树中删除它们.

注意:我没有测试过这段代码; 因人而异.