Отличается ли поведение setuptools build_ext от 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 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 и раскомментирую вторую строку, чтобы заменить distutils на setuptools, то 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).


person Community    schedule 14.03.2015    source источник


Ответы (1)


Итак, я провел отладку через выполнение setup.py, и мне просто нужно было написать «simdlib.simd» вместо «simdlib/simd» для имени расширения. Конечно, первый работает и с Distutils, так что просто setuptools не имеет обратной совместимости с неудобным синтаксисом предыдущего.

person Community    schedule 14.03.2015