簡體   English   中英

python中的PATH環境變量

[英]PATH environment variable in python

我正在使用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,插件運行一個子進程(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
)

終端窗口托管交互式shell,通常是bash 使用各種配置文件和“rc”文件初始化shell,如其手冊頁(例如bash )中所述。 初始化將以無數種方式改變環境。

特別是, /etc/profile運行path_helper工具以將目錄添加到PATH變量。

從Finder,Dock,Launchpad等啟動的應用程序不運行shell,也沒有類似的環境。 他們從父進程繼承了一個相當基本的環境,最終回到了launchd。 例如,請參閱launchctl export 您還可以使用Automator,AppleScript編輯器或第三方工具Platypus從GUI應用程序運行env命令以查看它具有的內容。

我不確定什么是Linux shell的標准,但同樣的原則適用。 從桌面環境啟動的程序將直接繼承環境。 Shell將使用各種腳本文件初始化其環境,因此可能具有不同的環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM