python中的PATH环境变量

2024-05-14 03:46:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是OSX10.8.3。在

如果你打开一个终端

echo $PATH

/usr/local/bin在那里,如果您通过sh或bash运行它的话

但是,python代码的输出:

^{pr2}$

缺少/usr/local/bin路径

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

我是怎么遇到的?我安装了一个sublime2插件js2coffee,该插件运行一个子进程(import subprocess),提供了一个exec的名称js2coffee—它位于/usr/local/bin中,这是python os env中没有的路径。为了修复它,我不得不将它添加到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
)

Tags: pathecho路径envbash插件终端bin
1条回答
网友
1楼 · 发布于 2024-05-14 03:46:44

终端窗口托管交互式shell,通常是bash。shell使用各种概要文件和“rc”文件初始化,如其手册页中所述(例如bash)。初始化将以多种方式改变环境。在

尤其是,/etc/profile运行^{}工具,将目录添加到PATH变量中。在

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

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

相关问题 更多 >