我有一个命令,它涉及使用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 /中的版本就像它在某处有一个无限循环而挂起......很奇怪。
无论如何,我把命令指向正确的路径并且它有效。
答案 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
(引号是的)