相关疑难解决方法(0)

setup.py:在其他任何事情之前运行build_ext

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

python swig distutils setuptools setup.py

5
推荐指数
2
解决办法
3996
查看次数

标签 统计

distutils ×1

python ×1

setup.py ×1

setuptools ×1

swig ×1