【发布时间】:2015-06-11 04:57:08
【问题描述】:
我正在使用 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
build_py 步骤尝试将它找到的所有 python 文件复制到构建目录。这些文件在build_ext 运行之前不存在(swig 创建了一堆 .py 文件)。
This answer 建议更改 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()
..然后使用cmdclass进行设置:
setup(
...
cmdclass = {'install' : Build_ext_first}
)
但这不起作用,因为super 不适用于旧式类,而且install 显然不是从object 继承的。
如何先build_ext?
【问题讨论】:
-
您可能需要重新表述您的 OP,因为不清楚您的问题是什么。
-
怎么样?我刚刚添加了步骤列表以及具体出了什么问题
标签: python swig setuptools distutils setup.py