python程序如何判断它是否在emacs中运行?

时间:2012-03-24 08:26:50

标签: python emacs

我通常在emacs中编写python。

我经常想重新评估我的文件,我可以使用Ctrl-C Ctrl-C来执行,这会导致解释器重新加载整个文件,然后我可以继续播放。

所以,如果我正在编写一个接受输入的程序,我通常会发现自己有两行:

lines = open("/home/jla/inputfile").readlines()
#lines = fileinput.input()

第一行是'开发时要做什么'(从已知的示例输入文件中读取) 第二个是'从命令行运行时要做什么'(从标准输入或从提供的文件名读取)

显然这很糟糕,所以我在想:

if in_emacs():
     lines = open("/home/jla/inputfile").readlines()
if run_from_shell():
     lines = fileinput.input()
else:
     oops()

我知道怎么写oops(),但我对in_emacs()run_from_shell()感到有些困惑,我想知道你们是否能够提供帮助。

2 个答案:

答案 0 :(得分:10)

emacs打开的shell应该具有环境变量EMACS=t。至少这适用于我的emacs,YMMV。

如果这不适合你,这里是如何找出python可以看到的依赖于emacs的环境变量。从shell运行并在emacs下运行,并比较输出。

import os
for e in os.environ:
    if 'EMACS' in e:
        print e, os.environ[e]

答案 1 :(得分:2)

一种选择是检查是否存在EMACSPATHEMACSLOADPATH等环境变量。另外,根据你在Emacs中启动Python的方式,TERM环境变量的值可能会给你一个有用的线索。