Mac OSX 中的 Python ctags 子进程调用

标签 python macos subprocess ctags

我有一个命令,涉及 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 运行 touch 命令,看看 python 是否厌恶在我的目录中创建文件,效果很好。

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

有什么想法吗?我很困惑,我需要在周五之前解决这个问题:(

更新:

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

无论如何,我将命令指向了正确的路径并且它起作用了。

最佳答案

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

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

关于Mac OSX 中的 Python ctags 子进程调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20644939/

相关文章:

python - 从 python 与 bash 交互

android - '错误: the command "android" failed' using cordova

objective-c - 确定窗口是否被拖动

python - 多字 linux cmd 不能与子进程模块一起工作

python - 在 Glade 中创建可修改的 GtkScale 对象

macos - 如何将 shell 脚本输出传递给通知?

python - 如何解析curl响应而不将其保存到文件中

python - 尝试使用 Python 验证 SHA1 消息签名。我究竟做错了什么?

扩展 int 的 Python 类并不完全像 int

python - 在 Django 中如何安排每日报告以电子邮件形式发送