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(使用前将#替换为@)