Python 更改setup.py(distutils.extension)中的输出文件名

Python 更改setup.py(distutils.extension)中的输出文件名,python,python-3.x,setup.py,distutils,distutils2,Python,Python 3.x,Setup.py,Distutils,Distutils2,这是我的设置。py 来自distutils.core导入设置 从distutils.extension导入扩展 从Cython.Build导入cythonize 包装器=扩展( name=“libwrapper”, ... ) 设置( name=“libwrapper”, ext_modules=cythonize([wrapper]) ) 当我运行python3 setup.py build\u ext时,输出文件名为libwrapper.cpython-36m-x86\u 64-linux

这是我的设置。py

来自distutils.core导入设置
从distutils.extension导入扩展
从Cython.Build导入cythonize
包装器=扩展(
name=“libwrapper”,
...
)
设置(
name=“libwrapper”,
ext_modules=cythonize([wrapper])
)

当我运行
python3 setup.py build\u ext
时,输出文件名为
libwrapper.cpython-36m-x86\u 64-linux-gnu.so
,但我只想将其命名为
libwrapper.so
,如何才能做到这一点?

尝试以下代码
sysconfig.get\u config\u var(“EXT\u后缀”)
返回特定于平台的后缀,可以通过子类化
build\u EXT
并重写
get\u EXT\u filename
从最终文件名中删除该后缀

从distutils导入sysconfig
从Cython.Distutils导入生成\u ext
从distutils.core导入设置
导入操作系统
类NoSuffixBuilder(构建外部):
def get_ext_文件名(自身、ext_名称):
filename=super()。获取外部文件名(外部名称)
后缀=sysconfig.get\u config\u var('EXT\u后缀')
ext=os.path.splitext(文件名)[1]
返回文件名。替换(后缀“”)+ext
设置(
....
cmdclass={“build_ext”:NoSuffixBuilder},
)

最终文件名将是
test。因此

您能根据您的建议扩展我的
setup.py
文件吗?不清楚如何操作。只需将
NoSuffixBuilder
添加到
setup.py
文件中,并将
cmdclass=…
添加到
setup
函数中,然后使用
python setup.py build\u ext
Traceback(最近一次调用最后一次):文件“code/cython/setup.py”,第9行,在nosuffixbuild\u ext类中:name错误:未定义名称“build\u ext”