【发布时间】:2015-12-08 07:34:24
【问题描述】:
我正在尝试编译、安装和运行一个我们称之为myPackage 的包。它包含一个*.pyx 文件,该文件从库fftw 中调用函数fftw_set_timelimit()。目前,当我运行导入包的脚本clientScript.py 时,我收到以下错误消息:
Traceback (most recent call last):
File "clientScript.py", line 5, in <module>
import myPackage.myModule
ImportError: /usr/local/lib/python2.7/dist-packages/myPackage/myModule.so: undefined symbol: fftw_set_timelimit
据我了解(我对 python 和 cython 很陌生),与 C 库的链接尚未在我的包中执行。事实上,我的setup.py 文件看起来像这样:
from setuptools import setup,find_packages
from Cython.Build import cythonize
import os
setup(
name = "myPackage",
version = "0.0.1",
url = "none",
author = "me",
author_email = "me@me.me",
packages=find_packages(),
ext_modules = cythonize("pyClo/pyClo.pyx"),
)
如您所见,我的setup.py 文件使用setuptools。我决定这样做,因为它是由Python Packaging User Guide 推荐的。但是,Cython documentation 中的说明使用 distutils 代替。链接库是通过调用distutils.Extension('file',['file.pyx'],libraries='fftw') 完成的。如何使用setuptools 获得相同的结果?
【问题讨论】:
标签: python cython setuptools distutils setup.py