- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用一个 setup.py,它在 build_ext 步骤中创建了一大堆 SWIG 接口(interface)文件。这需要先运行,因为后续构建步骤需要 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
?
最佳答案
因为害怕在 2 年前的帖子上发帖。我认为解决这个问题的正确方法是在“构建”阶段修复它:
from setuptools import setup, find_packages, Extension
from setuptools.command.build_py import build_py as _build_py
class build_py(_build_py):
def run(self):
self.run_command("build_ext")
return super().run()
setup(...,
cmdclass = {'build_py' : build_py},
)
这样它适用于 bdist_wheel 以及安装(还没有测试其他东西)。
注意 Python 2 中的 super
语法有点不同:
class build_py(_build_py):
def run(self):
self.run_command("build_ext")
return _build_py.run(self)
关于python - setup.py:先运行 build_ext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29477298/
我正在使用一个 setup.py,它在 build_ext 步骤中创建了一大堆 SWIG 接口(interface)文件。这需要先运行,因为后续构建步骤需要 python 文件的完整列表才能正常工作(
我正在使用以下命令构建一个 Cython 程序(称为 ex.testpackage): python setup.py build_ext --inplace 在像 /home/USER/Docume
我正在尝试在 Ubuntu 12.04 机器上的 virtualenv 中安装 psycopg2。所有相关的软件包都已安装(python-dev、libpq-dev 等...) 当我在激活 virtu
简而言之,将 distutils 导入替换为 setuptools 导入会导致共享库在就地构建中的不同位置生成。 这里是详细信息。首先是布局: . ├── setup.py └── simdlib
有没有办法将 build_ext 选项传递给 pip install 以改变包中包含的扩展的编译方式? (是的,我知道可以下载源代码并使用自定义 setup.cfg 构建/安装,但我很好奇是否可以传递
我在这里阅读了很多问题/答案,但没有找到适合我的案例的解决方案。 我正在尝试对我的软件(Python + C)建立 Windows 测试。我在 GitHub 项目中使用 Azure 来测试它。我需要
我尝试在不运行 build_ext 的情况下运行 python setup.py test 以确保任何 C 扩展和项目元数据都是最新的? 如这里所解释的: https://pythonhosted.o
假设我有一个结构如下的 python 包: foo/ __init__.py setup.py bar/ __init__.py bar.pyx 而setup.py的内容是
当我执行命令 python setup.py install 或 python setup.pydevelopment 时,它将执行 build_ext 命令作为步骤之一。如何将 --debug 选项
我正在学习如何使用 distutils,但有些地方我不明白,我希望有人能向我解释一下。 我已经成功创建了可以安装的 tar.gz 包 pip install mypackage.tar.gz 我用 s
我正在尝试按照几个指南和 StackOverflow 答案安装 GDAL ina virstualenvwrapper。 我在 ubuntu 13.04 上安装了 ligbdal1 和 libgdal
我是一名优秀的程序员,十分优秀!