Python 终端:点击stacktrace行打开编辑器

Python 终端:点击stacktrace行打开编辑器,python,terminal,editor,Python,Terminal,Editor,我希望python stacktrace行像终端中的超链接一样工作。我最喜欢的编辑器应该打开文件并转到正确的行: Traceback (most recent call last): File "/home/foo_eins_dt/djangotools/utils/smtputils.py", line 73, in _inner_to_outbox return func(*args, **kwargs) File "/home/foo_eins_dt/foo_mail/te

我希望python stacktrace行像终端中的超链接一样工作。我最喜欢的编辑器应该打开文件并转到正确的行:

Traceback (most recent call last):
  File "/home/foo_eins_dt/djangotools/utils/smtputils.py", line 73, in _inner_to_outbox
    return func(*args, **kwargs)
  File "/home/foo_eins_dt/foo_mail/tests/EditTest.py", line 289, in test_something
    beleg_ids=importutils.import_msg_file(temp)
TypeError: bar() takes exactly 2 arguments (1 given)
到目前为止,我使用gnome终端,但我可以切换到不同的终端


示例:我想点击
文件/home/foo\u eins\u dt/foo\u mail/tests/EditTest.py“
,文件EditTest.py应该在第289行打开。

我认为没有任何终端支持这种开箱即用的功能。我的终端(Mac上的iTerm)在我点击文件名时打开文件。但它忽略了行号


另一方面,研究支持Python和嵌入式终端的IDE。它们中的一些更可能支持您的用例。

对于互联网的未来:这在中的OSX中是可能的

这是我的设置,其中包含了崇高的文本:
~/bin/magic iterm open.py

#!/usr/bin/python

import sys
from subprocess import call

if len(sys.argv) > 2:

    pathToSubl = "/Users/rainer/bin/"

    filename, linenum = sys.argv[1], sys.argv[2]
    rest = "" if len(sys.argv) < 4 else sys.argv[3]

    if not filename.endswith('.py'):
        # I believe this approximates iTerm's default
        call(['/usr/bin/open', filename])
    else:
        newLinenum = linenum
        if not str.isdigit(linenum):
            line = linenum.split(",")
            if len(line) > 1:
                newLinenum = filter(str.isdigit, line[1])

        command = ["{0}subl".format(pathToSubl),
                   "--add",  # If you'd like to add to your current sublime project
                   "{0}:{1}".format(filename, newLinenum)]

        call(command)
#/usr/bin/python
导入系统
从子流程导入调用
如果len(sys.argv)>2:
pathToSubl=“/Users/rainer/bin/”
文件名,linenum=sys.argv[1],sys.argv[2]
rest=”“如果len(sys.argv)<4否则sys.argv[3]
如果不是filename.endswith('.py'):
#我相信这接近iTerm的违约
调用(['/usr/bin/open',filename])
其他:
newLinenum=linenum
如果不是str.isdigit(linenum):
line=linenum.split(“,”)
如果len(线)>1:
newLinenum=filter(str.isdigit,第[1]行)
command=[“{0}subl”.format(pathToSubl),
“--添加”,#如果您想添加到当前的崇高项目中
“{0}:{1}”。格式(文件名,newLinenum)]
呼叫(命令)
以及iTerm2中的配置:


所有的功劳都归于一个旧的redit帖子,这里:

我知道IDE有这样的功能。在这种情况下,我想要一个来自终端的链接。我想你需要修改源代码。也许这会有帮助:非常感谢。我喜欢你说的“互联网未来”。是的,我认为人机界面的可用性仍有待改进。