python - SWIG src 和共享 lib 文件的位置

标签 python c shared-libraries swig

我正在使用 SWIG 来使用 python 中的一些 C 函数

我的平台是linux/ubuntu

我已经成功生成了 example.py 文件并构建了 _example.so 共享库

现在我遇到的问题是让 python“找到”_example.so 文件

我正在尝试通过我的 ~/.bashrc 文件设置相关的搜索目录

我已经包含了包含 example.py 的目录,即

export PYTHONPATH="${PYTHONPATH}:/home/me/swig_project/src/"

_example.so 位于单独的构建目录中,因此我还设置了:

export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/home/me/swig_project/build/"

当我从 cmd 行运行以下命令时,我可以看到预期的目录存在,即

echo $LD_LIBRARY_PATH
echo $PYTHONPATH

我已经重新运行 ldconfig 几次,因为我认为这可能是问题所在,我也注销并重新登录。

但我仍然得到错误:

ImportError: No module named _example

所以我的 python 代码带有 import 语句:

import example

正在寻找 example.py 没问题,但似乎找不到 _example.so

即使我已将包含 _example.so 的目录添加到 LD_LIBRARY_PATH

如果我在 curr 目录中粘贴 _example.so 的副本,它就可以正常工作

最佳答案

解决了问题,example.py 的位置 _example.so 的位置必须在 中指定PythonPATH.

不是 PYTHONPATH 上的 example.pyLD_LIBRARY_PATH 上的 _example.so 我错误地假设了。

一旦问题得到纠正,导入模块错误就会停止

然后我开始收到 undefined symbol 错误,但那是另一个问题..

关于python - SWIG src 和共享 lib 文件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33172475/

相关文章:

c - 在C编程中;给定一个字符串,递归(无循环)计算一个新字符串,其中所有出现的 "pi"都已替换为 "3.14"。

尽管已经定义了函数体,但编译器仍发出有关 "implicit declaration"的警告

Android,在库项目中提供应用程序特定常量的最佳方式?

python-3.x - libc.musl-x86_64.so.1 : cannot open shared object file

c++ - 从 64 位应用程序加载 32 位共享库?

python - 在创建实例之前修改 typing.NamedTuple 的参数

python - 绘制(Cormen)红黑树插入时的奇怪结果

python - SQL 更新语句但使用 pyodbc

python - 对集合中的模型字段进行排序

fclose 后无法释放 fileName char *