2011-11-28 83 views
3

在Windows 7 64位已安裝Python 2.7,我沒有選擇使用哪個版本。Python腳本導致git publickey錯誤,當不運行在IDLE

我已經使用IDLE編寫腳本,當我按F5運行腳本時,一切都按預期工作。

但是,如果我從資源管理器中雙擊Python文件,或使用Py2Exe將其設置爲可執行文件,則腳本將失敗。

這是一個螺絲釘起來的部分:

print subprocess.check_output(["git", "pull", "origin", "master"], shell=False) 

我不斷收到git的錯誤:

Permission denied (publickey). 
Fatal: the remote end hung up unexpectedly. 

正如我所說的,如果我在IDLE打開腳本並運行有它的工作原理魅力。我比較的os.environ來自兩個環境的輸出和的輸出:

print subprocess.check_output(["ENV"], shell=False) 

我可以看到一般涉及inparticular的git沒有差異和路徑。我很難過!

PS。如果你有一個git的回購和安裝Python和時間來幫我,那麼請把下面的代碼到一個文件在您的git回購:

import sys, subprocess 
try: 
    print "pulling from github" 
    print subprocess.check_output(["git", "pull", "origin", "master"], shell=False) 
except: 
    print "Failed" 
    print sys.exc_info()[0] 
raw_input("Any key to exit.") 
sys.exit(0) 

上的文件「閒置編輯」右鍵單擊並選擇並擊中F5。然後嘗試直接雙擊.py文件...你們會發生什麼?

+0

git服務器是否要求您建立一個ssh密鑰? ('HTTP:// progit.org /電子書/ ch4-3.html')我不知道爲什麼IDLE將有機會獲得你的'id'密鑰文件,而探險家也不會,但ID文件是開始尋找一個地方。 – Dave

+0

@Dave感謝您的回覆。使用GitBash我可以執行這些操作,也可以在從IDLE運行我的Python腳本時將鍵全部整理出來。雖然它看起來不在空閒時運行Git無法找到它的關鍵。 – Gabe

+0

請查看我對user1069471的回覆 - 當從IDLE〜/ .ssh運行時檢查是否有可用的密鑰。當不從IDLE git下運行C:\ Program Files(x86)\ Git \ .ssh下,沒有任何密鑰 – Gabe

回答

0

嘗試運行cmd下的python腳本, 確保cmd以管理員權限運行。 如果一切正常,嘗試從資源管理器中使用鼠標右鍵單擊 - 運行>以管理員身份運行, 或在兼容性選項卡中的python.exe屬性,選中「運行此程序作爲管理員」複選框。

+0

仍然沒有運氣,像這樣運行Git提示我接受主機指紋,這意味着它作爲一個不同的用戶運行,無論如何也找不到密鑰。 – Gabe

+0

對不起,我張貼的示例代碼,但它不會在這裏工作,編輯主要的意見 – Gabe

+0

我已經找到了問題。當通過IDLE運行時,git會檢查我的主目錄.ssh是否有私鑰。當在其他模式下運行時,它正在C:\ Program Files(x86)\ Git \ .ssh下查看,當然沒有密鑰存儲在那裏!有誰知道爲什麼? – Gabe

相關問題