Я пытаюсь запустить чужой код, который, как мне кажется, никогда не запускался на Windows, и я не могу пройти мимо 'git log | head -n 1 | awk '{print $2}'' returned non-zero exit status 255
:
Logging to ./logs/log_j0_t0.txt
Traceback (most recent call last):
File "C:\Users\mcram\Documents\Github\low-memory-fnn-training\napoleon\utils\log_utils.py", line 55, in log_git_commit_info
stderr=subprocess.PIPE)
File "C:\Users\mcram\Anaconda3\envs\pytorch\lib\subprocess.py", line 512, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command 'git log | head -n 1 | awk '{print $2}'' returned non-zero exit status 255.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "main.py", line 86, in <module>
main()
File "main.py", line 23, in main
init_log(args)
File "C:\Users\mcram\Documents\Github\low-memory-fnn-training\napoleon\utils\log_utils.py", line 36, in init_log
log_git_commit_info()
File "C:\Users\mcram\Documents\Github\low-memory-fnn-training\napoleon\utils\log_utils.py", line 62, in log_git_commit_info
returncode, err_type=subprocess.CalledProcessError, cmd=cmd)
File "C:\Users\mcram\Documents\Github\low-memory-fnn-training\napoleon\utils\log_utils.py", line 109, in log_error
raise err_type(msg, **kwargs)
subprocess.CalledProcessError: Command 'git log | head -n 1 | awk '{print $2}'' returned non-zero exit status 255.
Я бегу Windows 10 и git version 2.14.2.windows.1
установлены. Ниже приведена соответствующая функция от log_utils.py
. Строка 55: stderr=subprocess.PIPE)
.
def log_git_commit_info():
get_commit_hash = "git log | head -n 1 | awk '{print $2}'"
check_unstaged = 'git diff --exit-code'
check_staged = 'git diff --cached --exit-code'
status = 'git status'
cmds = [get_commit_hash, check_unstaged, check_staged, status]
do_checks = [True, False, False, True]
saved_infos = []
for cmd, do_check in zip(cmds, do_checks):
try:
process_result = subprocess.run(
cmd,
shell=True,
check=do_check,
universal_newlines=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
saved_infos.append((process_result.returncode,
process_result.stdout.strip()))
except subprocess.CalledProcessError as e:
err_msg = str(e)
returncode = int(err_msg.split()[-1][:-1])
log_error(
returncode, err_type=subprocess.CalledProcessError, cmd=cmd)
commit_hash = saved_infos[0][1]
log_info('Current commit: ' + commit_hash)
if saved_infos[1][0] or saved_infos[2][0]:
log_warn('Uncommitted changes present!')
log_warn("Output of 'git status':\n" + saved_infos[3][1])
log_info("Output of 'git diff HEAD':")
diff_output = subprocess.run(
'git diff HEAD',
shell=True,
check=do_check,
universal_newlines=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
log_info(diff_output.stdout)
Единственное, что я могу предположить, это то, что git log | head -n 1 | awk '{print $2}'
вызывает ошибку, в частности, ошибку 255. Я искал повсюду объяснения кодов ошибок, но пока не нашел ничего, что кажется странным. Разве документы не должны объяснять коды ошибок?
В любом случае, я попытался просто запустить эту команду из командной строки, и я получил это:
(pytorch) C:\Users\mcram\Documents\Github\low-memory-fnn-training\apps\cifar10>git log | head -n 1 | awk '{print $2}'
'head' is not recognized as an internal or external command,
operable program or batch file.
Может ли тот факт, что 'head' is not recognized as an internal or external command
будет ошибка 255? Мне интересно, если это только потому, что я бегу из командной строки. От https://github.com/sr320/LabDocs/issues/664#issuecomment -318851496 Мне также интересно, если проблема в том, что Git Bash нет в моем PATH. Открытие Git Bash и запуск cat ~/.bash_profile
, однако, дает мне cat: /c/Users/mcram/.bash_profile: No such file or directory
. Я, однако, получаю это, которое, кажется, не включает путь к Анаконде:
$ echo $PATH
/c/Users/mcram/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/mcram/bin:/c
/ProgramData/DockerDesktop/version-bin:/c/Program Files/Docker/Docker/Resources/bin:/c/Program
Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1/bin:/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA
/v10.1/libnvvp:/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0/bin:/c/Program Files/NVIDIA GPU
Computing Toolkit/CUDA/v8.0/libnvvp:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows
/System32/WindowsPowerShell/v1.0:/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/c/Program
Files/PuTTY:/cmd:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem:/c/WINDOWS/System32
/WindowsPowerShell/v1.0:/c/WINDOWS/System32/OpenSSH:/c/Program Files/NVIDIA Corporation/Nsight Compute
2019.3.0:/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/c/Program Files/Intel
/Intel(R) Management Engine Components/DAL:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem:
/c/WINDOWS/System32/WindowsPowerShell/v1.0:/c/WINDOWS/System32/OpenSSH:/c/Users/mcram/AppData/Local
/Microsoft/WindowsApps:/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0/extras/CUPTI/libx64:
/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0/lib/x64:/c/Users/mcram/AppData/Local
/GitHubDesktop/bin:/c/Users/mcram/AppData/Local/Microsoft/WindowsApps:/usr/bin/vendor_perl:/usr/bin
/core_perl
Если я не могу найти .bash_profile
, я не знаю, как обновить PATH, и даже если бы мне удалось его найти, я бы не знал, что туда вставить, поскольку я не запускаю скрипт в Jupyter, а скорее в командной строке Python. У меня закончились идеи, и я мог бы помочь. Спасибо.