2015-03-04 7 views
1

Я пытаюсь использовать часть программного обеспечения под названием «bundler_sfm», которая выполняется с использованием скрипта python.Ошибка при запуске скрипта python в терминале: OSError: [Errno 2] Нет такого файла или каталога

Программное обеспечение, которое я пытаюсь использовать, доступно here, скрипт находится в каталоге utils, если вы хотите посмотреть.

При попытке запустить его я получаю следующее сообщение об ошибке питон:

File "/usr/lib/python2.7/subprocess.py", line 493, in call 
return Popen(*popenargs, **kwargs).wait() 
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__ 
errread, errwrite) 
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child 
raise child_exception 
OSError: [Errno 2] No such file or directory 

Код, который приводит к этой ошибке выглядит следующим образом:

# Extract SIFT data 
if verbose: 
    with open(pgm_filename, 'rb') as fp_in: 
     with open(key_filename, 'wb') as fp_out: 
      subprocess.call(BIN_SIFT, stdin=fp_in, stdout=fp_out) 

Я посмотрел на различные другие ответы с аналогичные ошибки, но я все еще в недоумении о том, как исправить эту проблему.

Я пытаюсь запустить это в терминале на элементарной ОС.

Любая помощь будет принята с благодарностью.

Благодаря

+0

Вы на Linux-Unix-подобная операционная система? Можете ли вы найти двоичный файл «sift»? Попробуйте выполнить: «просеивать» или попробовать выполнить «find/-name» sift «type -f» –

+0

Да, я использую элементарную ОС (linux). Я загрузил двоичный файл sift из [здесь] (http://www.cs.ubc.ca/~lowe/keypoints/), и он находится в папке/bin программы. Мой LD_LIBRARY_PATH включает в себя путь к папке, содержащей этот двоичный файл (это все инструкции, которые я выполнил в соответствии с приведенной выше ссылкой github), а запуск echo $ LD_LIBRARY_PATH подтверждает, что путь включен. –

+0

ok, вы знаете путь, где у вас есть utils/bundler.py? В той же родительской папке utils выглядит так, что там будет папка с bin. Можете ли вы попробовать скопировать двоичный файл sift в эту конкретную папку bin? Код выглядит так, как ожидается, найдет двоичный файл sift в папке bin, которая находится в той же родительской папке, что и папка utils. –

ответ

0

Уже работал его в комментариях, но только для ответа:

Разработал место, где утилита Тинкса просеять двоичную расположен распечатав BIN_SIFT перед вызовом subprocess.call ().

Реализованный этот путь был неправильным

В хаке обходного, жесткий код правильный путь к линии 55 из bundler.py в виде строки внутри списка:

BIN_SIFT = ["/real/path/to/sift"] 
+0

Думаю, я прыгнул с пистолета, сделал изменение, то же самое происходит. Я думаю, что это как-то связано с python, так как другие люди задавали вопросы об этой ошибке с другими программами. –

+0

Не работает ли он с таким же номером строки относительно bundler.py? Каковы разрешения на двоичный файл sift?Прочитайте и выполните для пользователя, которым вы выполняете bundler.py как? –

+0

Разрешения просеивания: -rwxrwxr-x 1 jeff jeff 45070 Sep 17 2011 просеивать. Ошибка указывает на строку subprocess.call (BIN_SIFT, stdin = fp_in, stdout = fp_out) –