在 python 中导入之前设置 LD_LIBRARY_PATH

2024-03-07

Python 使用PYTHONPATH环境变量来确定应在哪些文件夹中查找模块。 您可以通过修改来玩它sys.path,它非常适合纯 Python 模块。 但是当模块使用共享对象文件或静态库时,它会查找LD_LIBRARY_PATH(在 Linux 上),但据我所知,这不能轻易更改,并且取决于平台。

解决此问题的快速方法当然是设置环境变量或调用脚本,例如LD_LIBRARY_PATH=. ./script.py,但是您必须为打开的每个新 shell 重新设置它。 另外,.so在我的例子中,文件将始终位于与.py文件,但很可能会移动到另一个绝对路径,因此我想在每次调用脚本时自动设置它们。

如何编辑 Python 解释器在运行时独立于平台查找库的路径?

EDIT:

我已经尝试过了os.environ['LD_LIBRARY_PATH'] = os.getcwd(),但无济于事。


更新:请参阅下面的编辑。

我会用:

import os

os.environ['LD_LIBRARY_PATH'] = os.getcwd()  # or whatever path you want

这设置了LD_LIBRARY_PATH仅用于当前进程执行的持续时间/生命周期的环境变量。

EDIT:看起来需要在启动 Python 之前设置:在运行时更改 ctypes 的 LD_LIBRARY_PATH https://stackoverflow.com/questions/856116/changing-ld-library-path-at-runtime-for-ctypes

所以我建议使用包装纸.sh (or .py如果你坚持)脚本。另外,正如 @chepner 指出的,您可能需要考虑安装您的.so文件位于标准位置(在 virtualenv 内)。

也可以看看从 Python 内部设置 LD_LIBRARY_PATH https://stackoverflow.com/questions/6543847/setting-ld-library-path-from-inside-python

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 python 中导入之前设置 LD_LIBRARY_PATH 的相关文章

随机推荐