我正在使用setup.py,它在build_ext步骤中创建了一大堆SWIG接口文件.这需要先运行,因为后续的构建步骤需要一个完整的python文件列表才能正常工作(比如将python文件复制到包目录,创建egg,创建源列表等).
当你这样做时,这是当前发生的事情setup.py install:
running install
running bdist_egg
running egg_info
running install_lib
running build_py
running build_ext
Run Code Online (Sandbox Code Playgroud)
该build_py步骤尝试将它找到的所有python文件复制到构建目录.这些文件在build_ext运行之前不存在(swig创建了一堆.py文件).
这个答案建议改变,sub_commands但似乎没有做任何事情.
我试着install像这样继承子命令类以build_ext在其他任何事情之前运行:
class Build_ext_first(setuptools.command.install.install):
def run(self):
self.run_command("build_ext")
super(Build_ext_first, self).run()
Run Code Online (Sandbox Code Playgroud)
..然后用它来设置cmdclass:
setup(
...
cmdclass = {'install' : Build_ext_first}
)
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为super它不适用于旧式类,install显然不会继承object.
我该怎么做build_ext?