我正在使用setup.py,它在build_ext步骤中创建了一大堆SWIG接口文件.这需要先运行,因为后续的构建步骤需要一个完整的

python文件列表才能正常工作(比如将python文件复制到包目录,创建egg,创建源列表等).

当你进行setup.py安装时,这是当前发生的事情:

running install

running bdist_egg

running egg_info

running install_lib

running build_py

running build_ext

build_py步骤尝试将它找到的所有python文件复制到构建目录.在build_ext运行之前,这些文件不存在(swig会创建一堆.py文件).

This answer建议更改sub_commands,但似乎没有做任何事情.

我试着像这样继承class 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()

..然后使用cmdclass进行设置:

setup(

...

cmdclass = {'install' : Build_ext_first}

)

但是这不起作用,因为super不能用于旧式类,并且安装显然不会从对象继承.

我该如何先做build_ext?

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐