我正在使用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
?