【问题标题】:Python ctags subprocess call in Mac OSXMac OSX中的Python ctags子进程调用
【发布时间】:2014-01-05 20:26:37
【问题描述】:

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

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 运行一个触摸命令,看看 python 是否对在我的目录中创建文件有一些厌恶,并且工作正常。

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

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

更新:

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

不管怎样,我把命令指向了正确的路径并且它起作用了。

【问题讨论】:

    标签: python macos subprocess ctags


    【解决方案1】:

    您可能正在尝试运行 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

    (是的,带引号)

    【讨论】:

    • Homebrew 的全部意义和存在理由是您不必必须使用 sudo。
    • 我已经这样做了,但是我使用了错误的 ctags。我在 /usr/bin 目录中使用的是错误的。感谢您的指正。一旦我指定 /usr/local/bin/ctags 它就像一个魅力:)
    【解决方案2】:

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

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

    【讨论】:

      最近更新 更多