我正在研究Python 2的Swift扩展。由于distutils / setuptools仅支持C / C ++扩展,因此我想修改构建命令以使它们构建Swift代码。
我的python setup.py build
和python setup.py install
运行成功:软件包及其内容位于正确的位置,并且本机扩展名正确加载到import
上。
但是,我的团队更喜欢使用pip install -e .
(最终会使用python setup.py develop
)来加快开发速度;而且,setup.py
仍然不知道将build
编译的本机库复制到源目录。
在我当前的设置中:
SwiftBuildExt
类(扩展了Cython的类,因为我们支持语言多样性)... run
来构建可以通过glob
动态找到的Swift模块。run
将条目添加到我称为swift_modules
的列表中; get_output
在执行run
之后,将被覆盖以返回基础文件和swift_modules
。要使develop
工作,我需要更改什么?
答案 0 :(得分:0)
我发现它正在读取setuptools.command.develop
的源代码:develop
使用build_ext
参数运行inplace
命令,该命令告诉build_ext
保存构建输出到源代码树。可预测地使用self.inplace
子类中的build_ext
测试该参数。从那里开始,只需更改文件的复制位置即可。
在Python 3中,它的处理方式有所不同,我没有探讨过。