Я пытаюсь скомпилировать, установить и запустить пакет, который мы назовем myPackage
. Он содержит файл *.pyx
, который вызывает функцию fftw_set_timelimit()
из библиотеки fftw
. В настоящее время, когда я запускаю script 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 = "[email protected]",
packages=find_packages(),
ext_modules = cythonize("pyClo/pyClo.pyx"),
)
Как вы можете видеть, мой файл setup.py
использует setuptools
. Я решил сделать это, так как это рекомендуется Руководство пользователя Python Packaging. Однако инструкции в документации Cython используют distutils
вместо этого. Связывание библиотек осуществляется путем вызова distutils.Extension('file',['file.pyx'],libraries='fftw')
. Как достичь того же результата с помощью setuptools
?