【发布时间】:2017-08-06 15:08:38
【问题描述】:
我正在 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
【问题讨论】:
-
即使有额外的文字
import helloworld也能正常工作。您可以尝试在创建后编辑文件名,或制作副本。但我只是顺其自然。它不会妨碍我。 -
将
gcc命令的结尾从-o /home/paul/mypy/cython3/try_numpy/iterate.cpython-35m-i386-linux-gnu.so更改为-o ./iterate.so,会更改生成的.so名称。但我找不到在setup文件中指定-o选项的方法。
标签: python gcc cython distutils cythonize