Различно ли се държи 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