python - 使用 `python setup.py develop` 安装更多文件

标签 python python-2.7 python-2.x setuptools distutils

我正在研究 Python 2 的 Swift 扩展。由于 distutils/setuptools 仅支持 C/C++ 扩展,因此我需要修改构建命令以使其构建 Swift 代码。

我运行的python setup.py buildpython setup.py install显示成功:包及其内容位于正确的位置,并且 native 扩展正确加载在导入上。

但是,我的团队更喜欢使用 pip install -e .,它最终会执行 python setup.pydevelop 来稍微加快开发速度;就目前情况而言,setup.py 不知道将 build 编译的 native 库复制到源目录。

在我当前的设置中:

  • SwiftBuildExt 类(它扩展了 Cython 的类,因为我们,呃,支持语言多样性)...
  • ...覆盖 run 以构建使用 glob 动态找到的 Swift 模块。
  • run 将条目添加到一个列表中,我将其称为 swift_modules
  • get_output 在执行 run 后被覆盖以返回基础文件和 swift_modules

我需要更改什么才能让 develop 正常工作?

最佳答案

我发现它正在阅读 setuptools.command.develop 的源代码: develop 使用 inplace 参数运行 build_ext 命令,该参数告诉 build_ext 将构建输出保存到源树。可以预见的是,可以使用 build_ext 子类中的 self.inplace 来测试此参数。从那里开始,只需更改文件的复制位置即可。

它在 Python 3 中以不同的方式处理,我还没有探索过。

关于python - 使用 `python setup.py develop` 安装更多文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54191874/

相关文章:

python - 属性错误: 'filter' object has no attribute 'replace' in Python 3

python - 递归逆 FFT

python:打印短utf编码字符串时遇到问题

python - Odoo Python3 base64 错误 : TypeError: expected bytes-like object, 不是文本

不带 in 的 python 列表理解

Python根据子列表中的第一个元素将列表拆分为子列表

python - 使用 LDA 的主题建模信息作为特征,通过 SVM 进行文本分类

Python raw_input 使用 TAB 而不是 ENTER?

python - Mac OS X 查找版本返回两条语句

python - 使用 Cython 时如何将一个 C++ 类(引用)传递给另一个类?