python - 在 setup.py (distutils.extension) 中更改输出文件名
问题描述
这是我的setup.py
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
wrapper = Extension(
name="libwrapper",
...
)
setup(
name="libwrapper",
ext_modules=cythonize([wrapper])
)
当我运行python3 setup.py build_ext
输出文件时调用libwrapper.cpython-36m-x86_64-linux-gnu.so
,但我只想命名它libwrapper.so
,我该怎么做?
解决方案
试试下面的代码。返回特定于平台的后缀,可以通过子类化和覆盖sysconfig.get_config_var('EXT_SUFFIX')
从最终文件名中删除。build_ext
get_ext_filename
from distutils import sysconfig
from Cython.Distutils import build_ext
from distutils.core import setup
import os
class NoSuffixBuilder(build_ext):
def get_ext_filename(self, ext_name):
filename = super().get_ext_filename(ext_name)
suffix = sysconfig.get_config_var('EXT_SUFFIX')
ext = os.path.splitext(filename)[1]
return filename.replace(suffix, "") + ext
setup(
....
cmdclass={"build_ext": NoSuffixBuilder},
)
最终文件名将是test.so
推荐阅读
- python - Pymongo 批量删除
- logging - 如何配置 ibm cloud kube 转发日志 - 从 kube 转发日志的最佳方式
- luxon - 使用 luxon 库显示相对于给定时间的时间
- css - CSS 动画 (@keyframes) 正在加热 CPU
- c++ - 在 VS 2017 社区上进行调试后,控制台上会显示更多文本
- html - Cognos Report Studio 列表提示 HTML 项
- python - 剪刀石头布 HMAC(SHA-3 或 SHA-2)加密
- crystal-reports - Crystal Reports 日期和字符串的最大值
- python - Python将每个字符串除以字符串的总长度
- javascript - 为什么不能在 Javascript 数组映射函数中映射 ISO 转换?