gpt4 book ai didi

python - Cython 编译将文本附加到文件名,如何摆脱它?

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:26 27 4
gpt4 key购买 nike

我在 Ubuntu 平台上使用 cython。一切正常,除了有一件事让我烦恼。将 cython 项目编译为 .so 文件时,.pyx 文件的文件名会附加“cpython-36m-x86_64-linux-gnu”。例如,如果我构建“helloworld.pyx”,生成的 .so 文件称为:“helloworld.cpython-36m-x86_64-linux-gnu.so”。然而,我只想将它命名为“helloworld.so”。

我认为答案很简单,所以我开始谷歌搜索,即使在 30 分钟后我也找不到任何关于这个主题的内容。有人知道吗?

这是我的 .pyx 文件:

print('hello world')

setup.py 文件:

from distutils.core import setup
from Cython.Build import cythonize

setup(
ext_modules = cythonize("helloworld.pyx")
)

构建文件:

python setup.py build_ext --inplace
Compiling helloworld.pyx because it changed.
[1/1] Cythonizing helloworld.pyx
running build_ext
building 'helloworld' extension
gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/**/anaconda3/include/python3.6m -c helloworld.c -o build/temp.linux-x86_64-3.6/helloworld.o
gcc -pthread -shared -L/home/**/anaconda3/lib -Wl,-rpath=/home/ed/anaconda3/lib,--no-as-needed build/temp.linux-x86_64-3.6/helloworld.o -L/home/**/anaconda3/lib -lpython3.6m -o /home/**/new_project/helloworld.cpython-36m-x86_64-linux-gnu.so

最佳答案

您无法摆脱它,至少不能自动摆脱它。 PEP 3149 定义了要包含在已编译模块文件名中的标签:https://www.python.org/dev/peps/pep-3149/

标签包括 Python 实现(此处为 cpython)、版本(此处为 36 表示 3.6)、编译时选项标志(m 用于使用 Python 的内存分配器,这是默认设置)。平台标签 x86_64-linux-gnu 不是 PEP 3149 的一部分,我不知道它在哪里定义。

这些更改是在 distutils 中实现的,cython 不是“罪魁祸首”:-)

包的导入名称不受此文件名的影响。

您有任何不遵守 PEP 3149 的具体原因吗?您可以通过手动发出链接器命令来替换安装文件的构建过程,但这不太方便。

关于python - Cython 编译将文本附加到文件名,如何摆脱它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42817198/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com