我想链接到由用Cython我自己的C库,下面我在网上找到了方向,其中包括这样的回答:用Cython无法找到共享对象文件
Using Cython To Link Python To A Shared Library
我运行IPython通过Spyder。
我setup.py看起来是这样的:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
import numpy as np
setup(
ext_modules = cythonize(
[Extension("*",["*.pyx"],
libraries =["MyLib"],
extra_compile_args = ["-fopenmp","-O3"],
extra_link_args=["-L/path/to/lib"])
]),
include_dirs = [np.get_include()],
)
文件libMyLib.so
为/path/to/lib
,它编译罚款。
我,做我的IPython配置文件的启动文件夹中有一个Python脚本这个
try:
os.environ["LD_LIBRARY_PATH"] += ":/path/to/lib"
except KeyError:
os.environ["LD_LIBRARY_PATH"] = "/path/to/lib"
我可以证实,这是跑步,因为如果我输入os.environ["LD_LIBRARY_PATH"]
到IPython的解释,它返回/path/to/lib
但是,当我尝试加载用Cython模块(即import mycythonmodule
)我得到:
ImportError: libMyLib.so: cannot open shared object file: No such file or directory
我也TR灭蝇灯将libMyLib.so在其他地方看到的,如果用Cython会发现:
- 在目录中的Python运行
- 在Python路径
- 在相同的文件夹用Cython模块
但它仍然没有找到共享库。我可以通过将它放入/usr/lib
,但我不希望它在那里,我希望能够设置库路径。
我错过了什么吗?