gpt4 book ai didi

python - setuptools build_ext 的行为是否与 distutils 不同?

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:05 25 4
gpt4 key购买 nike

简而言之,将 distutils 导入替换为 setuptools 导入会导致共享库在就地构建中的不同位置生成。

这里是详细信息。首先是布局:

.
├── setup.py
└── simdlib
├── __init__.py
├── simd.c
└── test.py

然后是 setup.py 脚本:

from distutils.core import setup, Extension
#from setuptools import setup, Extension
from Cython.Build import cythonize

setup(name='simdlib',
ext_modules=[Extension('simdlib/simd', ['simdlib/simd.c'])])

如果我运行 python setup.py build_ext -i,则会在 simdlib 目录中生成 simd.so。

但是如果我注释掉 setup.py 的第一行并取消注释第二行以用 setuptools 替换 distutils,那么 simd.so 将在顶层目录中生成,而不是像以前那样在 simdlib 中生成。在这种情况下有一行额外的输出:

copying build/lib.macosx-10.9-x86_64-2.7/simdlib/simd.so -> 

我在很多地方都看到 setuptools 可以替代 distutils,所以我很困惑。

一方面,我在 Python 2.7.9 和 setuptools 3.6(由 virtualenv 安装)以及 Python 3.4.3 和 setuptools 12.05(由 pyvenv 安装)中遇到了这个问题。

最佳答案

所以我通过执行 setup.py 进行了调试,我只需要为扩展名编写“simdlib.simd”而不是“simdlib/simd”。当然,前者也可以与 Distutils 一起使用,所以这里只是 setuptools 不向后兼容笨拙的前者语法。

关于python - setuptools build_ext 的行为是否与 distutils 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29048623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com