Накратко, замяната на импортирането на 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).