0

GitPythonを使用してリモートリポジトリを自分のマシンにフェッチしています。次のコードはUbuntu12.04で正常に機能しますが、Amazon ec2、Ubuntu 11.10サーバーでは、OSErrorが発生します。[Errno2]そのようなファイルまたはディレクトリエラーはありません。

    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
>>> 

しかし、ローカルマシンではそのような問題はありません。何が悪いのかわかりません。どんな助けでも大歓迎です!

4

1 に答える 1

2

モジュールからエラーが発生していsubprocessます。これは、EC2インスタンスにインストールされていないか、環境変数gitにない場所にあることを示しています。PATH

GitPythonこれはgitコマンドラインツールによって異なることに注意してください。Gitリポジトリと対話するためのネイティブPythonモジュールが必要な場合は、dulwichを参照してください。

于 2012-05-29T19:08:50.427 に答える