比较来自世界各地的卖家的域名和 IT 服务价格

安装 LD_LIBRARY_PATH 在进口B之前 python

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:
https://coderoad.ru/856116/
因此,我建议使用包装脚本
.sh

/或者
.py

, 如果你是不是/. 另外,如图所示 @chepner, 您可以考虑安装文件。
.so

标准位置 /内 virtualenv/.

另见一节
https://coderoad.ru/6543847/

奔跑吧少年

赞同来自:

我对此问题的解决方案是将它放在脚本的第一个字符串中 Python /而不是通常 shebang/:


exec env LD_LIBRARY_PATH=/some/path/to/lib /path/to/specific/python -x "$0" "$@"


所以它如何工作:

没有 shebang 当前的 shell 将文件作为脚本进行处理 shell,

"exec" 它确保第一个字符串也是此文件中的最后一个命令。 shell,

"env" 例如,在此用于安装任何环境变量 LD_LIBRARY_PATH,

准确的解释员方式 Python 可以指定或 "env" 可以找到它 PATH,

"-x" - 这是一个选择 Python, 它使第一行被解释器忽略 Python,

"$0" - 这是脚本的名称, "$@" 替换为位置参数。

喜特乐

赞同来自:

Python, 当环境变量的值 , 怎么样
os.environ[‘LD_LIBRARY_PATH’]

或者
os.environ[‘PATH’]

, 它将父进程环境中的字典中的值复制,如规则, bash /中等的 bash 过程 get 转移到子进程运行实例 python/.

您可以通过命令输出查看可变环境的此部分。
env

的 bash.

你也可以看到/阅读这些env数据
/proc/<pid>/environ

, 通过输入无限循环/
while 1: pass

/ 更改任何环境变量后。

如果你看到/读取该变量的此值/数据是
/proc/<pid>/environ

在脚本内更改它后 python, 虽然脚本,您会看到真实变量的数据不会改变 python 显示修改后的字典键值更新。

更改变量时实际发生了什么 env 在脚本里面 python , 在脚本中
os.environ['LD_LIBRARY_PATH']='/<new_location>'

, 因此,这是它只需更新本地字典中的值与变量部分未进行更新。 env 过程。 因此,它不会完全倒回到目前的过程中,因为

ONLY 本地词典

曾是 modified/updated/populated.

因此,如果我们希望反映新的环境变量,我们必须使用新的数据变量数据覆盖流程内存的过程
execv

.

例子

:


new_lib = '/<new_location>'
if not new_lib in os.environ['LD_LIBRARY_PATH']:
os.environ['LD_LIBRARY_PATH'] += ':'+new_lib
try:
os.execv/sys.argv[0], sys.argv/
except Exception as e:
sys.exit/'EXCEPTION: Failed to Execute under modified environment, '+e/

import xyz
#do something else


局限性

: 完美 python 不应允许此类变量修改
os.environ

.
但由于没有常量类型的字典数据,因此它允许您更改数据变量。 改变值绝对没有意义,因为它没有任何有用的反射在运行过程的真实环境中,除非它被使用
execv

.
</new_location></new_location></pid></pid>

喜特乐

赞同来自:

解决方案很棒 env 重复初始化


import os

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


代码必须在适当的地方接受....


os.execv/sys.argv[0], sys.argv/

要回复问题请先登录注册