私はこの答えを含め、私はウェブ上で見つけた指示に従って、Cythonから自分のCライブラリにリンクしようとしています:Cythonでき
Using Cython To Link Python To A Shared Library
私が実行していますIPythonからSpyderまで
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
であり、それは罰金コンパイル:
私のsetup.pyは次のようになります。
私はIPythonインタプリタにos.environ["LD_LIBRARY_PATH"]
を入力すると、それは/path/to/lib
を返しますので、私は、これが実行されていることを確認することができ、この
try:
os.environ["LD_LIBRARY_PATH"] += ":/path/to/lib"
except KeyError:
os.environ["LD_LIBRARY_PATH"] = "/path/to/lib"
をして、私のIPythonプロファイルのスタートアップフォルダにPythonスクリプトを持っています私はCythonモジュール(すなわちimport mycythonmodule
)をロードしようとすると、しかし、私は得る:
ImportError: libMyLib.so: cannot open shared object file: No such file or directory
私も、TRましたcythonがそれを見つけるだろうかどうかを確認するために他の場所でlibMyLib.soを入れIED:Pythonはcythonモジュールと同じフォルダにPythonパス
- を
しかし、それでも共有ライブラリは見つかりません。ライブラリを見つけるための唯一の方法は、/usr/lib
にドロップすることですが、私はそれを望んでいません。私はライブラリのパスを設定できるようにしたいと思います。
何か不足していますか?