2013-12-17 5 views
1

У меня есть команда, которая включает ctags для индексации большой директории с использованием python. Это выглядит следующим образом:Python ctags вызов подпроцесса в Mac OSX

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 с терминала, и она отлично работает.

Затем я пытаюсь запустить команду touch из python, чтобы увидеть, есть ли у python некоторое отвращение к созданию файлов в моей директории, и это прекрасно работает.

Однако, когда я запускаю команду выше, она просто зависает при вызове подпроцесса.

Любые идеи? Я в тупике, и мне нужно, чтобы понять это в пятницу :(

Update:

Я забыл упомянуть, что я уже установил правильную версию Ctags из Homebrew Как жэнь отметила, хотя, когда я. использовал brew install ctags (уведомление не использовалось sudo), оно было помещено в/usr/local/bin/ctags, когда я искал/usr/bin/ctags, который по-прежнему был неверным. По какой-то причине версия в/usr/bin/просто болтался, как это было в бесконечный цикл где-то ... странный.

Во всяком случае, я указал команду на правильный путь, и она работала.

ответ

0

Возможно, вы пытаетесь запустить ctags, который поставляется с XCode.

Чтобы использовать фактические Ctags вы ищете:

1) Если вы не установили варку уже установить его ->http://brew.sh/

2) Если вы еще не установили Ctags Вас на самом деле ищет:

brew install ctags

3) Затем попробуйте запустить этот Ctags как: /usr/local/bin/ctags вместо того, чтобы просто писать ctags

Incase вы не можете найти Ctags в директории, которую я написал, попробуйте запустить его, как это ->

`brew --prefix`/bin/ctags

(да с цитаты)

+1

Вся суть и смысл существования Homebrew - это то, что вы ** не ** должны использовать sudo. –

+0

Я уже сделал это, но использовал неправильные ctags. Я использовал тот, который был в моем/usr/bin каталоге, который был неправильным. Спасибо за исправление. Как только я указал/usr/local/bin/ctags, он работал как шарм :) – onetwopunch

1

Это, скорее всего, связано с несовместимостью между GNU ctags и OSX/BSD ctags. Например, ctags OSX/BSD не принимает аргумент командной строки -R.

Если вам абсолютно необходима возможность рекурсии (что вы, вероятно, делаете), я бы предложил вам установить GNU или буйные ctags через Homebrew.

Смежные вопросы