gpt4 book ai didi

python - 如何使用 `env python3`并保留调用环境?

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:17 24 4
gpt4 key购买 nike

我在 OSX 上遇到一个问题,#!/usr/bin/env python3 导致环境变量,例如库路径(例如 LD_LIBRARY_PATH)丢失。在 Linux 上它可以正常工作。

阅读 env 上的手册页,它似乎不应该这样做。它应该只在我请求时才修改环境,但我没有。

什么是保护环境的可移植 shebang 线?

注意:我正在检测问题,因为在我的一个程序上调用 subprocess.open 失败,因为它找不到库之一。然而,如果我以交互方式启动 python,则相同的调用工作正常。

最佳答案

这是 OS X System Integrity Protection在上类;某些“危险”环境变量,例如 DYLD_LIBRARY_PATH ,并且,正如您发现的那样,LD_LIBRARY_PATH , 不会传递给带有 /usr/bin 的任何二进制文件或 /bin路径。

因此,/usr/bin/env永远看不到几个环境变量中的任何一个,也不能将它们传递给 python3它产生的子进程。

请参阅有关该主题的其他几篇文章:

如果您使用 subprocess ,我会检查 shebang 行,提取以 env 命名的二进制文件,在你的命令前加上那个二进制文件,然后绕过 env完全。

关于python - 如何使用 `env python3`并保留调用环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41913504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com