gpt4 book ai didi

python - python中的PATH环境变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:11 25 4
gpt4 key购买 nike

我使用的是 OS X 10.8.3。

如果你打开一个终端,

echo $PATH

/usr/local/bin 在那里,如果你通过 sh 或 bash 运行它也是如此

但是 python 代码输出:

import os
print os.environ.copy()

缺少/usr/local/bin 路径

谁能解释一下 $PATH 是如何工作的?有什么东西可以扩展它吗?为什么 python 脚本没有打印我在终端中看到的 $PATH?它在 Linux 发行版上的行为是否相同?

我是怎么遇到的?我安装了一个 sublime 2 插件,js2coffee,该插件运行一个子进程(导入子进程),提供一个 exec 的名称,js2coffee - 它在/usr/local/bin 中,这是一个不在 python os env 中的路径.为了修复它,我必须将它添加到环境中:

env = os.environ.copy()
env["PATH"] = "/usr/local/bin/"

js2coffee = subprocess.Popen(
'js2coffee',
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True,
env= env
)

最佳答案

终端窗口承载交互式 shell,通常是 bash。 Shell 使用各种配置文件和“rc”文件进行初始化,如其手册页中所述(例如 bash )。该初始化将以多种方式改变环境。

特别是,/etc/profile 运行 path_helper用于将目录添加到 PATH 变量的工具。

从 Finder、Dock、Launchpad 等启动的应用程序不运行 shell,也没有类似的环境。他们从父进程继承了一个相当基本的环境,最终回到 launchd。例如,请参阅 launchctl export 的输出。您还可以使用 Automator、AppleScript Editor 或第三方工具 Platypus 从 GUI 应用程序运行 env 命令以查看它有什么。

我不确定什么是 Linux shell 的标准,但适用相同的原则。从桌面环境启动的程序将直接继承环境。 Shell 将使用各种脚本文件初始化它们的环境,因此可能具有不同的环境。

关于python - python中的PATH环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15717140/

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