- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试按照我在网上找到的说明从 Cython 链接到我自己的 C 库,包括这个答案:
Using Cython To Link Python To A Shared Library
我正在通过 Spyder 运行 IPython。
我的 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"
我可以确认它正在运行,因为如果我在 IPython 解释器中键入 os.environ["LD_LIBRARY_PATH"]
,它会返回 /path/to/lib
但是当我尝试加载 Cython 模块(即 import mycythonmodule
)时,我得到:
ImportError: libMyLib.so: cannot open shared object file: No such file or directory
我也试过将 libMyLib.so 放在其他地方,看看 cython 是否能找到它:
但是还是找不到共享库。我可以让它找到库的唯一方法是将它放在 /usr/lib
中,但我不想让它在那里,我希望能够设置库路径。
我错过了什么吗?
最佳答案
我正在 self 回答,以防其他人遇到同样的问题。看起来答案在这里:
Set LD_LIBRARY_PATH before importing in python
Changing LD_LIBRARY_PATH at runtime for ctypes
根据这些答案(和我的经验),链接器在启动 python 时读取 LD_LIBRARY_PATH,因此从 python 内部更改它没有任何有用的效果,至少不是我希望的效果。唯一的解决方案是将 python 包装在设置 LD_LIBRARY_PATH 的 shell 脚本中,或者将共享对象放在链接器搜索路径的某个位置。
有点痛,但就是这样。
关于python - Cython 找不到共享对象文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36827871/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!