代码之家  ›  专栏  ›  技术社区  ›  prosseek

如何知道我是否从Textmate/emacs运行python?

  •  0
  • prosseek  · 技术社区  · 14 年前

    我使用TextMate调试python脚本,因为我喜欢使用'Command-R'从TextMate运行python的特性,并且我了解到emacs提供了类似的特性。

    我需要知道python是从命令行运行还是从TextMate/emacs运行。我该怎么做?

    补充

    我用emacs得到了一个答案,我碰巧用TextMate解决了这个问题。

    1. 如果需要,请使用此变量操作系统环境['TM\u ORGANIZATION\u NAME']:返回True

    4 回复  |  直到 14 年前
        1
  •  4
  •   Trey Jackson    14 年前

    对于Emacs:如果python作为低级进程运行,那么环境变量 INSIDE_EMACS 将被设置。

    Emacs设置环境变量 在子shell中的EMACS内部 逗号分隔的列表,包括 Emacs版本。程序可以检查这个 变量来确定它们是否 在Emacs子shell中运行。

        2
  •  1
  •   nmichaels    14 年前

    sys.argv 将告诉您如何调用Python。我不知道TextMate,但当我告诉Emacs评估缓冲区时,它的值是 ['-c'] . 根据手册页,这意味着它正在执行一个指定的命令。如果Python直接从命令行运行,没有参数, [] -t 在命令行中。

    不过,那是相当刻薄的。也许有更好的办法。

        3
  •  1
  •   unutbu    14 年前

    the docs 对于 sys.path

    在程序启动时初始化, 是包含脚本的目录 用来调用Python的 翻译。如果脚本目录 如果 以交互方式调用解释器 输入),路径[0]是空字符串 , 它指示Python搜索模块 脚本目录已插入 在作为

    所以呢

    if sys.path[0]:
        # python was run interactively
    else:
        # python is running a script.
    

    或者,例如,从IPython提示符(在Emacs中):

    In [65]: sys.path
    Out[65]: 
    ['',  <-------------------- first entry is empty string
     '/usr/bin',
     '/usr/local/lib/python2.6/dist-packages/scikits.statsmodels-0.2.0-py2.6.egg',
     '/usr/local/lib/python2.6/dist-packages/pyinterval-1.0b21-py2.6-linux-i686.egg',
      ... ]
    
        4
  •  0
  •   pyfunc    14 年前

    使用Command-R直接运行脚本

    使用Shift-Command-R从终端运行脚本。