【发布时间】:2015-05-16 21:39:45
【问题描述】:
简而言之,将 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 安装)遇到了这个问题。
【问题讨论】:
标签: python setuptools distutils