Этот ответ объясняет, как исправить эту ошибку:
fatal: unable to start c:\path\.repo\repo/main.py
fatal: [Errno 8] Exec format error
Резюме: Я наконец-то использовал python
, упакованный Cygwin.
Подробности: Ниже приводится полная история.
Подсказка от repo
отслеживания ошибок должна добавить '/c/app/Python27/python '
:
- строка 136 в v1.20
REPO_MAIN = '/c/app/Python27/python ' + S_repo + '/main.py'
- строка 735 в v1.20 (начало функции
main
)
wrapper_path = '/c/app/Python27/python ' + os.path.abspath(__file__)
Но мы получаем ошибку TypeError: coercing to Unicode: need string or buffer, NoneType found
Поэтому я отменил эти изменения выше и выполнил другие изменения ниже (в версии 1.20):
- строка 136, заменена одиночная косая черта на двойную обратную косую черту:
REPO_MAIN = S_repo + '\\main.py'
- строка 766, добавлен
python
абсолютный путь в качестве первого элемента me
:
me = ['C:\\app\\Python27\\python.exe', repo_main,
'--repo-dir=%s' % rel_repo_dir,
'--wrapper-version=%s' % ver_str,
'--wrapper-path=%s' % wrapper_path,
'--']
- строка 776, заменена
os.execv(repo_main, me)
на
os.execv('C:\\app\\Python27\\python.exe', me)
Однако мы все равно получаем ошибку:
$ Traceback (most recent call last):
File "c:\path\.repo\repo\main.py", line 39, in <module>
from subcmds.version import Version
File "c:\path\.repo\repo\subcmds\__init__.py", line 36, in <module>
['%s' % name])
File "c:\path\.repo\repo\subcmds\forall.py", line 17, in <module>
import fcntl
ImportError: No module named fcntl
Документация Python v2.7 fcntl
говорит, что fcntl
доступна только для платформы Unix.
Я, наконец, снова отменил все изменения в скрипте repo
и установил Cygwin, включая его пакеты python
и git
: это удалось как прелесть.
Но так как символические ссылки , имитируемые Cygwin, не распознаются MSysGit, мы должны использовать Cygwin git
. А графические интерфейсы поверх git
не полностью совместимы с Cygwin git
...
(см. Также мой другой пост )
Редактировать:
Cygwin может использовать нативные символические ссылки NTFS (просто установите CYGWIN=winsymlinks:native
и станьте администратором). Поэтому можно использовать MSysGit и любой другой графический интерфейс на его основе: -)