Python ctags Mac OSX中的子进程调用

时间:2013-12-17 21:21:48

标签: python macos subprocess ctags

我有一个命令,它涉及使用python索引大型目录的ctags。它是这样的:

cmd = ['ctags', '-R', '-f', 'tagfile', 'my_large_dir']
subprocess.call(cmd)
#wait for ctags to finish then go on

这适用于Win 7和Ubuntu,但不适用于Mac OSX Mavericks。

然后我尝试从终端运行实际的ctags命令,它工作正常。

然后我尝试从python运行touch命令,看看python是否有些厌恶在我的目录中创建文件,并且工作正常。

但是,当我运行上面的命令时,它只是挂起在子进程调用上。

有什么想法吗?我很难过,我需要在星期五之前解决这个问题:(

更新

我忘了提到我已经从Homebrew安装了正确版本的ctags。正如Ren指出的那样,当我使用brew install ctags时(注意不使用sudo)当我查看/ usr / bin / ctags时,它被放入/ usr / local / bin / ctags,它仍然有错误的版本我相信。出于某种原因,/ usr / bin /中的版本就像它在某处有一个无限循环而挂起......很奇怪。

无论如何,我把命令指向正确的路径并且它有效。

2 个答案:

答案 0 :(得分:1)

这很可能是因为GNU ctags和OSX / BSD ctags之间不兼容。例如,OSX / BSD ctags不接受-R命令行参数。

如果你绝对需要递归的能力(你可能会这样做),我建议你通过Homebrew安装GNU或旺盛的ctags。

答案 1 :(得分:0)

您可能正在尝试运行XCode附带的ctags。

使用您正在寻找的实际ctags:

1)如果您尚未安装brew,请安装它 - > http://brew.sh/

2)如果您还没有安装实际需要的ctags:

brew install ctags

3)然后尝试将此ctags运行为:/usr/local/bin/ctags而不是仅仅编写ctags

如果你在我写的目录中找不到ctags,请尝试像这样运行 - >

`brew --prefix`/bin/ctags

(引号是的)