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

更改当前流程环境的LD_LIBRARY_PATH

秦凯定
2023-03-14
问题内容

是否可以更改当前过程的环境变量?

在Python脚本更具体地说我想改变LD_LIBRARY_PATH,这样在模块“X”依赖于一些进口xyz.soxyz.so从我给出的路径采取的LD_LIBRARY_PATH

还有其他方法可以动态更改从库加载位置的路径吗?

编辑 :我想我需要提及的是,我已经尝试过类似os.environ [“ LD_LIBRARY_PATH”] = mypath
os.putenv(’LD_LIBRARY_PATH’,mypath)的操作

但是这些修改了环境。对于生成的子流程,而不是当前流程,并且模块加载不考虑新的LD_LIBRARY_PATH

Edit2 ,所以问题是我们可以更改环境还是其他东西,以便库加载器看到它并从那里加载?


问题答案:

原因

os.environ["LD_LIBRARY_PATH"] = ...

无效并不简单:此环境变量控制动态加载程序的行为(ld- linux.so.2在Linux和ld.so.1Solaris上),但是该加载程序仅LD_LIBRARY_PATH进程启动时立即查看。
这一点 之后
更改LD_LIBRARY_PATH当前过程中的值无效(就像该问题的答案所说)。

您确实有一些选择:

答:如果您知道需要xyz.so使用/some/path,并从一开始就控制python脚本的执行,则只需LD_LIBRARY_PATH根据自己的喜好进行设置(在检查是否已设置好之后),然后重新执行自己。这是做什么的Java

B.您可以 导入
之前/some/path/xyz.so通过其绝对路径导入。然后,您导入时,加载程序将发现它已经加载了,并且将使用已加载的模块,而不是再次搜索它。
__x.so``x.so``xyz.so

C.如果您x.so自己构建,则可以添加-Wl,-rpath=/some/path到其链接行,然后导入x.so将使加载程序在中查找依赖的模块/some/path



 类似资料:
  • 问题内容: 我使用以下代码临时修改环境变量。 此上下文主要用于测试用例。例如, 我的问题:有没有简单/优雅的书写方式?我想过实际上做,然后..但我不知道是否会影响程序行为(例如:如果被 引用 在Python解释器在其他地方)。 问题答案:

  • 问题内容: 我在Edittext的addTextChangedListener方法中已自定义,一切正常,但是当我更改语言(语言环境)时,我的addTextChangedListener无法正常工作。 我搜索了我的问题并找到了解决方案: 但我不知道如何使用此代码。 问题答案: 您可以尝试先转换为,然后将其投射到

  • 问题内容: 我有一个Spring应用程序,希望用户能够更改首选语言环境。当前,用户可以更改当前会话的语言环境,但是我希望能够保存users选项,以便每当他们登录时,使用已保存的语言环境(如果存在)。我有一个mysql数据库,用于存储用户区域设置首选项。我创建了一个自定义AuthenticationSuccessHandler,以处理将语言环境更改为已保存的语言环境的操作,该方法适用于已将语言环境保

  • 问题内容: 我有一个脚本,可以导出环境变量并启动一些下标。 可用于下标中的进程开头。如何更改环境变量? 我试图用设置变量,但是那不起作用。 问题答案: 通常,您只能在流程启动时影响流程的环境变量。如果您需要将更改传达给正在运行的流程,则环境不是正确的工具。 编辑该问题的目的是为了补充讨论中的问题:将偶尔更改的设置传达给正在运行的进程的一种相当不错的方法是指定一个配置文件,在该文件中设置LOGLEV

  • 问题内容: 是否可以更改流程父级? 例如:父母A有孩子B,我可以使父母B是不杀死A的Init进程吗? 问题答案: 并非来自流程B的外部。 在流程B内部,您可以调用fork来复制您的流程,然后让原始副本退出。发生这种情况时,新副本B2将不是A的子级,其父级将被设置为1(初始化过程)。

  • 我在我的应用程序中使用日期格式化程序来显示一些日期。但我希望这个日期以阿拉伯语显示。所以我试图像这样改变格式化程序的区域设置: 但它不起作用。。 如果我改成这样: 会工作正常...但我希望日期显示在阿拉伯语... 如何做到这一点?我希望日期是例如١١ يناير ٢٠١٨..怎么办?