Короче говоря, замена импорта 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).