当前位置: 首页 > 面试题库 >

在导入python之前设置LD_LIBRARY_PATH

史谦
2023-03-14
问题内容

Python使用PYTHONPATH环境html" target="_blank">变量来确定应在哪个文件夹中查找模块。您可以通过修改来解决它sys.path,这对于纯Python模块非常有效。但是,当模块使用共享的目标文件或静态库时,它会在LD_LIBRARY_PATH(在linux上)查找这些文件,但是据我所知,这不能轻易更改,并且依赖于平台。

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

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

编辑:

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


问题答案:

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

我会用:

import os

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

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

编辑:
看来需要在启动Python之前进行以下设置:在运行时为ctypes更改LD_LIBRARY_PATH

因此,我建议使用包装器.sh(或.py如果您坚持)的脚本。另外,正如@chepner指出的那样,您可能要考虑将.so文件安装在标准位置(在virtualenv内)。



 类似资料:
  • 问题内容: 我的代码是: 但是scriptlib在其他目录中,因此我必须将该目录包含在环境变量“ PYTHONPATH”中。 无论如何,在执行导入语句之前,我首先可以在环境变量“ PYTHONPATH”中添加scriptlib目录,例如: 如果是这样,则仅是该命令提示符的值还是全局的? 提前致谢 问题答案: 这将为您的Python进程/实例(即正在运行的可执行文件)添加路径。该路径不会为任何其他P

  • 问题内容: 我正在尝试在Django中开发示例项目,并且在运行syncdb命令时遇到错误。 这是我的项目结构的样子: / Users / django_demo / godjango / bookings: 我的manage.py文件如下: 我的PYTHONPATH和DJANGO_SETTINGS_MODULE设置如下 我的WSGI.py文件如下所示: 当我运行python manage.py s

  • 问题内容: 我正在尝试为我的LAMP项目设置Dockerfile,但是启动MySQL时遇到了一些问题。我在Dockerfile上有以下几行: 但我不断收到此错误: 关于如何在Dockerfile构建期间设置数据库创建和转储导入的任何想法? 问题答案: 中的每条指令都在不同的层中执行(如的文档中所述)。 在中,您有三个说明。问题是MySQL服务器仅在第一个启动。在其他版本中,没有MySQL正在运行,

  • 关于如何在Dockerfile构建过程中设置数据库创建和转储导入有什么想法吗?

  • 模型地址 我下载的是glb Original format 导入设置是这样的: 问1:导入后出现的这些是什么?正常吗? 可以避免吗? 问2:这里说是控制姿态的但删除也只是x轴的角度变成0,好像也没什么别的影响。可以删除吗? blender 4.0.2

  • 在插入之前,你想通过一段 SQL 为你的 POJO 某一个字段设值。你可以通过 @Prev 属性 @Table("t_pet") public class Pet{ @Name private String name; @Column("photo") @Prev( @SQL("SELECT txt FROM t_pet_photo WHERE pname=@n