2013-11-02 4 views
0

У меня возникли проблемы с Python, которые могут найти исполняемый файл на моей машине Linux. Мой PATH по умолчанию включает этот исполняемый файл (svnlook), но когда я запускаю скрипт python, функция ниже не может найти исполняемый файл. Есть какие нибудь идеи как это починить?Python subprocess.Popen Не найти исполняемый файл

def command_output(cmd): 
    child = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE) 
    output = child.communicate()[0] 
    return output, child.returncode 


def get_author(): 
    cmd = "svnlook author %s %s %s" % (svn_opt, svn_txn, svn_repo) 
    author, return_code = command_output(cmd) 

    return author.strip() 

Ошибка:

Traceback (most recent call last): 
    File "/home/user/app/csvn/data/repositories/repo/hooks/pre-commit", line 82, in <module> 
    author = get_author() 
    File "/home/user/app/csvn/data/repositories/repo/hooks/pre-commit", line 53, in get_author 
    author, return_code = command_output(cmd) 
    File "/home/user/app/csvn/data/repositories/repo/hooks/pre-commit", line 36, in command_output 
    child = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE) 
    File "/home/user/app/activepython-2.7.2.5_x86_64/lib/python2.7/subprocess.py", line 679, in __init__ 
    errread, errwrite) 
    File "/home/user/app/activepython-2.7.2.5_x86_64/lib/python2.7/subprocess.py", line 1228, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 
Error: [Errno 2] No such file or directory 
+0

Почему это запрещено? – c12

+2

Пожалуйста, разместите полную информацию о трассировке. –

+2

Вы не находите _executable_ не процесс. –

ответ

1

Вы, вероятно, хотите, чтобы обеспечить полный путь к исполняемому файлу, например /usr/bin/svnlook или /usr/local/bin/svnlook вместо svnlook.

Для получения более подробной информации см. this answer to a related question.

0

Попробуйте запустить его с консоли. Убедитесь, что права/исполнительность верны. Попробуйте os.system().

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