【问题标题】:Python script causes git publickey error when not run in IDLEPython 脚本在 IDLE 中未运行时导致 git publickey 错误
【发布时间】:2012-01-07 23:29:30
【问题描述】:

在windows 7 64bit 上安装了Python 2.7,我无法选择使用哪个版本。

我使用 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)

我看不出与 git 和一般路径有关的差异。我被难住了!

PS。如果你安装了 git repo 和 python 并且有时间帮助我,那么请将以下代码放入你的 git repo 中的文件中:

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)

右键单击文件并选择“使用 IDLE 编辑”并按 F5。然后尝试直接双击.py文件......你们会发生什么?

【问题讨论】:

  • git 服务器是否要求你建立 ssh 密钥? (http://progit.org/book/ch4-3.html) 我不知道为什么 IDLE 可以访问您的 id 密钥文件,而 explorer 不能,但 id 文件是一个开始查找的地方。
  • @Dave 感谢您的回复。键都整理好了,使用 GitBash 我可以执行这些操作,从 IDLE 运行我的 Python 脚本时也是如此。虽然在 IDLE 下不运行时似乎找不到它的密钥。
  • 请查看我对 user1069471 的回复 - 当从 IDLE ~/.ssh 运行时,会检查一个有效的密钥。当不从 IDLE 运行时,在 C:\Program Files (x86)\Git\.ssh 下查找没有密钥的地方
  • 我已将问题归结为:os.environ['HOME'] 在 IDLE 外部不存在,但在 IDLE 内部存在。

标签: python windows git github python-idle


【解决方案1】:

尝试在cmd下运行python脚本, 确保 cmd 以管理员权限运行。 如果可行,请尝试从资源管理器中通过鼠标右键单击->以管理员身份运行, 或者在兼容性选项卡的python.exe属性中,勾选“以管理员身份运行此程序”复选框。

【讨论】:

  • 还是不走运,像这样运行 Git 提示我接受主机指纹,这意味着它以不同的用户身份运行并且无论如何也找不到密钥。
  • 对不起,我发布了示例代码,但它在这里不起作用,编辑了主要评论
  • 我发现了问题。当通过 IDLE 运行时,git 检查我的主目录 .ssh 是否有私钥。在其他模式下运行时,它会在 C:\Program Files (x86)\Git\.ssh 下查看,当然那里没有存储密钥!有谁知道为什么?
猜你喜欢
  • 2020-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
  • 2015-05-27
相关资源
最近更新 更多