我正在使用 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.py
和 LD_LIBRARY_PATH
上的 _example.so
我错误地假设了。
一旦问题得到纠正,导入模块错误
就会停止
然后我开始收到 undefined symbol
错误,但那是另一个问题..
关于python - SWIG src 和共享 lib 文件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33172475/