2012-05-29 5 views
0

Я использую GitPython для извлечения удаленного репозитория на свою машину. Следующий код хорошо работает на моем Ubuntu 12.04, но на моем amazon ec2, на сервере Ubuntu 11.10, я получаю OSError: [Errno 2] Нет такой ошибки файла или каталога.OSError: [Errno 2] Нет такого файла или каталога на GitPython

repo = git.Repo.init(fs_path) 
    origin = repo.create_remote('origin',repo_url) 
    origin.fetch() 
    origin.pull(origin.refs[0].remote_head) 

Когда я запускаю блок в скрипте, я не получаю никаких сообщений об ошибках. Но когда я пытаюсь эти действия на интерактивной оболочки я получаю эту трассировку стека:

>>> import git 
>>> repo = git.Repo.init("/var/wwww/dir/subdir/tmp/12") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/GitPython-0.3.2.RC1-py2.7.egg/git/repo/base.py", line 656, in init 
    output = git.init(**kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/GitPython-0.3.2.RC1-py2.7.egg/git/cmd.py", line 227, in <lambda> 
    return lambda *args, **kwargs: self._call_process(name, *args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/GitPython-0.3.2.RC1-py2.7.egg/git/cmd.py", line 456, in _call_process 
    return self.execute(call, **_kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/GitPython-0.3.2.RC1-py2.7.egg/git/cmd.py", line 335, in execute 
    **subprocess_kwargs 
    File "/usr/lib/python2.7/subprocess.py", line 679, in __init__ 
    errread, errwrite) 
    File "/usr/lib/python2.7/subprocess.py", line 1239, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 
>>> 

Но у меня нет таких проблем на моей локальной машине. Не знаю, что происходит. Любая помощь будет высоко оценена!

+0

Путь существует, и python может получить к нему доступ – masnun

ответ

2

Ошибка выходит из модуля subprocess. Это говорит о том, что git либо не установлен в вашем экземпляре EC2, либо находится в том месте, которое не находится в вашей переменной окружения PATH.

Отметьте, что GitPython зависит от инструментов командной строки git. Если вам нужен встроенный модуль Python для взаимодействия с репозиториями Git, взгляните на dulwich.

+0

Я только что нашел это сам и пришел сюда, чтобы ответить на вопрос. Да, действительно, у меня не было git, и это вызывало ошибку. Спасибо за быстрый ответ. Я просто хочу, чтобы Gitpython выпустил более содержательное сообщение об ошибке/исключение. Если библиотека зависит от внешнего инструмента, первое, что должна сделать библиотека, это проверить, установлена ​​ли зависимость. С этим был трудный час. Еще раз спасибо! – masnun

+0

Я рад, что все получилось. – larsks

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