首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何知道我是否从Textmate/emacs运行python?

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

Stack Overflow用户
提问于 2010-09-13 17:32:37
回答 4查看 527关注 0票数 0

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

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

已添加

我使用TextMate进行python编码/调试,它非常有用。但是,有时我需要使用命令行运行测试。我通常使用TextMate和命令行模式打开调试/日志记录模式。这就是我问这个问题的原因。另外,我计划使用emacs进行python调试,所以我想问一下emacs的情况。

在使用emacs的情况下,我得到了一个答案,我碰巧用TextMate解决了这个问题。

  1. 在Preferences ->高级-> Shell变量中设置变量,我发现TM_ORGANIZATION_NAME已经可以使用了。所以,我就用这个变量。
  2. 使用此变量,如果os.environ‘’TM_ORGANIZATION_NAME‘:返回True

我想TextMate中的shell变量在我使用完之后就会消失。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-13 17:59:35

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

从医生那里:

Emacs将子subshell中的环境变量INSIDE_EMACS设置为逗号分隔的列表,包括Emacs版本。程序可以检查此变量以确定它们是否在Emacs子subshell中运行。

票数 4
EN

Stack Overflow用户

发布于 2010-09-13 17:42:06

sys.argv将告诉您如何调用Python。我不知道TextMate的情况,但是当我告诉Emacs使用eval缓冲区时,它的值是['-c']。这意味着它正在执行指定的命令,根据手册页。如果Python直接从没有参数的命令行运行,sys.argv将是[]。如果运行python脚本,它将有脚本名和传递给它的任何参数。您可能希望在Emacs中设置您的python模式,而在TextMate中任何类似的东西都可以在命令行中放置一些特殊的东西,比如-t

不过,这还挺麻烦的。也许还有更好的办法。

票数 1
EN

Stack Overflow用户

发布于 2010-09-13 18:55:47

医生们sys.path

在程序启动时初始化时,此列表的第一项path是包含用于调用Python解释器的脚本的目录。如果脚本目录不可用(例如,如果解释器是交互式调用的,或者脚本是从标准输入读取的),则路径是空字符串,它指示首先搜索当前目录中的模块。注意,脚本目录是插入作为PYTHONPATH结果的条目之前插入的。

所以

代码语言:javascript
运行
复制
if sys.path[0]:
    # python was run interactively
else:
    # python is running a script.

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

代码语言:javascript
运行
复制
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',
  ... ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3702889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档