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

Python setuptools build_ext的行为是否与distutils不同?,python,setuptools,distutils,Python,Setuptools,Distutils,简言之,将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 Cyth

简言之,将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,那么simd.so将在simdlib目录中生成

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

copying build/lib.macosx-10.9-x86_64-2.7/simdlib/simd.so -> 
我在很多地方读到过setuptools可以取代distutils,所以我感到困惑


一方面,我在Python2.7.9和setuptools 3.6(由virtualenv安装)以及Python3.4.3和setuptools 12.05(由pyvenv安装)中遇到了这个问题。

因此,我通过执行setup.py进行了调试,只需要编写“simdlib.simd”而不是“simdlib/simd”作为扩展名。当然,前者也适用于Distutils,所以只是setuptools在这里与前一种语法不向后兼容