2017-01-09 56 views
1

我目前正在爲Adblock Plus的源代碼爲學校 項目,我使用的是自動安裝插件可以方便地部署到我的瀏覽器 然而, Python中提供的構建工具似乎只在我出於某種原因在Git Bash中執行它們時才起作用 。Python腳本拋出WindowsError在Windows命令行,工作在Git中的Bash

以下是錯誤消息時,我嘗試在 Windows命令行執行命令:

C:\Users\Evert\Documents\GitHub\adblockplus>python build.py autoinstall 8888 
Traceback (most recent call last): 
    File "C:\Users\Evert\Documents\GitHub\adblockplus\ensure_dependencies.py", line 380, in <module> 
    resolve_deps(repo) 
    File "C:\Users\Evert\Documents\GitHub\adblockplus\ensure_dependencies.py", line 324, in resolve_deps 
    update_repo(target, vcs, rev) 
    File "C:\Users\Evert\Documents\GitHub\adblockplus\ensure_dependencies.py", line 272, in update_repo 
    resolved_revision = repo_types[type].get_revision_id(target, revision) 
    File "C:\Users\Evert\Documents\GitHub\adblockplus\ensure_dependencies.py", line 106, in get_revision_id 
    return subprocess.check_output(command, cwd=repo).strip() 
    File "C:\Python27\lib\subprocess.py", line 212, in check_output 
    process = Popen(stdout=PIPE, *popenargs, **kwargs) 
    File "C:\Python27\lib\subprocess.py", line 390, in __init__ 
    errread, errwrite) 
    File "C:\Python27\lib\subprocess.py", line 640, in _execute_child 
    startupinfo) 
WindowsError: [Error 2] The system cannot find the file specified 
Command '['C:\\Python27\\python.exe', 'C:\\Users\\Evert\\Documents\\GitHub\\adblockplus\\ensure_dependencies.py', 'C:\\Users\\Evert\\Documents\\GitHub\\adblockplus']' returned non-zero exit status 1 
Failed to ensure dependencies being up-to-date! 
Traceback (most recent call last): 
    File "build.py", line 18, in <module> 
    buildtools.build.processArgs(BASE_DIR, sys.argv) 
    File "C:\Users\Evert\Documents\GitHub\adblockplus\buildtools\build.py", line 601, in processArgs 
    commands[command](baseDir, scriptName, opts, args, type) 
    File "C:\Users\Evert\Documents\GitHub\adblockplus\buildtools\build.py", line 55, in __call__ 
    return self._handler(baseDir, scriptName, opts, args, type) 
    File "C:\Users\Evert\Documents\GitHub\adblockplus\buildtools\build.py", line 225, in runAutoInstall 
    packager.autoInstall(baseDir, type, host, port, multicompartment=multicompartment) 
    File "C:\Users\Evert\Documents\GitHub\adblockplus\buildtools\packagerGecko.py", line 334, in autoInstall 
    createBuild(baseDir, type=type, outFile=fileBuffer, multicompartment=multicompartment) 
    File "C:\Users\Evert\Documents\GitHub\adblockplus\buildtools\packagerGecko.py", line 294, in createBuild 
    version = getBuildVersion(baseDir, metadata, releaseBuild, buildNum) 
    File "C:\Users\Evert\Documents\GitHub\adblockplus\buildtools\packager.py", line 58, in getBuildVersion 
    buildNum = getBuildNum(baseDir) 
    File "C:\Users\Evert\Documents\GitHub\adblockplus\buildtools\packager.py", line 46, in getBuildNum 
    result = subprocess.check_output(['git', 'rev-list', 'HEAD'], cwd=baseDir) 
    File "C:\Python27\lib\subprocess.py", line 212, in check_output 
    process = Popen(stdout=PIPE, *popenargs, **kwargs) 
    File "C:\Python27\lib\subprocess.py", line 390, in __init__ 
    errread, errwrite) 
    File "C:\Python27\lib\subprocess.py", line 640, in _execute_child 
    startupinfo) 
WindowsError: [Error 2] The system cannot find the file specified 

這是不是一個巨大的問題,對我來說,因爲它不建立,但我不能幫但 想知道:這兩個環境之間的區別是什麼使得 這個腳本的工作?

+0

我的第一個猜測是它試圖執行某些操作(子進程模塊是提示),並且在該路徑的窗口下不可用。示例/c/windows/notepad.exe vs c:\ windows \ notepad.exe。 – RedX

+1

問題可能出現在「subprocess.check_output(['git','rev-list','HEAD'],cwd = baseDir)」 - 檢查git是否在系統路徑等。我會幫助你更多,但窗戶對我來說是黑魔法。 – MacHala

+0

順便說一句,歡迎來到該網站!查看[tour](https://stackoverflow.com/tour)瞭解更多關於期望的內容。 – cxw

回答

0

該問題似乎是git.exe不在您的Windows PATH,它絕對是在Git Bash :)。你有兩個 「未找到」 的錯誤,既爲git

  1. ensure_dependencies.py,線106,執行command。每the source,命令是['git', 'rev-parse', '--revs-only', rev + '^{commit}']
  2. packager.py,第46行,執行['git', 'rev-list', 'HEAD']

這兩個都是失蹤git。要修復,運行python build.py之前,做

path %PATH%;c:\<wherever git.exe is located> 

或添加的git.exe的位置,使用控制面板系統PATH。

編輯如果你的Git安裝從GitHub,this answer提供了有關加入的Git你PATH細節。

+0

謝謝,將git.exe添加到我的路徑是解決方案。 –

相關問題