如何知道我是否从 Textmate/emacs 运行 python?
我使用 TextMate 来调试 python 脚本,因为我喜欢使用“Command-R”从 TextMate 运行 python 的功能,并且我了解到 emacs 提供了类似的功能。
我需要知道 python 是从命令行运行还是从 TextMate/emacs 运行。我怎样才能做到这一点?
添加
我使用 TextMate 进行 python 编码/调试,它非常有用。但是,有时我需要使用命令行运行测试。我通常使用 TextMate 打开调试/日志记录模式,并使用命令行模式关闭。这就是我问这个问题的原因。另外,我打算使用emacs进行python调试,所以想问一下emacs的情况。
我在 emacs 中得到了答案,并且我碰巧用 TextMate 解决了这个问题。
- 在首选项 -> 设置变量高级-> Shell变量,我发现TM_ORGANIZATION_NAME已经在那里可以使用了。所以,我将只使用这个变量。
- 使用此变量, if os.environ['TM_ORGANIZATION_NAME']: return True
我猜 TextMate 中的 shell 变量在我使用完后会消失。
I use TextMate to debug python script, as I like the feature of using 'Command-R' for running python from TextMate, and I learned that emacs provide similar feature.
I need to know if the python is run from command line or from TextMate/emacs. How can I do that?
ADDED
I use TextMate for python coding/debugging, and it's pretty useful. But, sometimes I need to run the test using command line. I normally turn on debugging/logging mode with TextMate, and off with command line mode. This is the reason I asked the question. Also, I plan to use emacs for python debugging, so I wanted to ask the case for emacs.
I got an answer in the case with emacs, and I happen to solve this issue with TextMate.
- Set variables in Preferences -> Advanced -> Shell Variables, and I found that TM_ORGANIZATION_NAME is already there to be used. So, I'll just use this variable.
- Use this variable, if os.environ['TM_ORGANIZATION_NAME']: return True
I guess the shell variable from TextMate disappear when I'm done using it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
对于 Emacs:如果 python 作为低级进程运行,则环境变量
INSIDE_EMACS
将被设置。来自文档:
For Emacs: If python is run as an inferior process, then the environment variable
INSIDE_EMACS
will be set.From docs:
sys.argv
会告诉你Python是如何被调用的。我不了解 TextMate,但是当我告诉 Emacs eval buffer 时,它的值为['-c']
。根据手册页,这意味着它正在执行指定的命令。如果 Python 直接从不带参数的命令行运行,则sys.argv
将是[]
。如果您运行 python 脚本,它将具有脚本名称以及您传递给它的任何参数。您可能想在 Emacs 中设置 python 模式,而在 TextMate 中等效的操作是在命令行中放置一些特殊的内容,例如-t
。不过,这太黑客了。也许有更好的方法。
sys.argv
will tell you how Python was invoked. I don't know about TextMate, but when I tell Emacs to eval buffer, its value is['-c']
. That means it's executing a specified command, according to the man page. If Python's run directly from the command line with no parameters,sys.argv
will be[]
. If you run a python script, it will have the script name and whatever arguments you pass it. You might want to set up your python-mode in Emacs and whatever the equivalent in TextMate is to put something special like-t
in the command line.That's pretty hackish though. Maybe there's a better way.
来自 sys.path 的文档 :
或者
,例如,从 IPython 提示符(在 Emacs 内):
From the docs for
sys.path
:So
Or, for example, from the IPython prompt (inside Emacs):
使用 Command-R 直接运行脚本
使用 Shift-Command-R 从终端运行脚本。
Use Command-R to run the script directly
Use Shift-Command-R to run the script from terminal.