回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我已经有一段时间没有使用App Engine了,现在我要重新开始使用它了。我使用的是64位LinuxGo运行时版本1.8.1。</p>
<p>我相信我正确地遵循了文档中的步骤,并且我相信我做了过去正确工作的事情,但是在尝试启动<code>dev_appserver.py</code>时,我得到了这个错误:</p>
<pre>
$ dev_appserver.py .
INFO 2013-07-11 07:24:45,919 sdk_update_checker.py:244] Checking for updates to the SDK.
INFO 2013-07-11 07:24:46,230 sdk_update_checker.py:288] This SDK release is newer than the advertised release.
WARNING 2013-07-11 07:24:46,443 simple_search_stub.py:955] Could not read search indexes from /tmp/appengine.batterybotinfo.darshan/search_indexes
Traceback (most recent call last):
File "/home/darshan/bin/dev_appserver.py", line 182, in
_run_file(__file__, globals())
File "/home/darshan/bin/dev_appserver.py", line 178, in _run_file
execfile(script_path, globals_)
File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 695, in
main()
File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 688, in main
dev_server.start(options)
File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 659, in start
apis.start()
File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/api_server.py", line 137, in start
super(APIServer, self).start()
File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 295, in start
if self._start_all_dynamic_port(host_ports):
File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 348, in _start_all_dynamic_port
server.start()
File "/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 194, in start
socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
TypeError: getaddrinfo() argument 1 must be string or None
</pre>
<p>我的第一个想法是我可能使用了不正确的Python版本。果然,我使用的是2.7.5,而且<a href="https://developers.google.com/appengine/docs/go/gettingstarted/devenvironment" rel="nofollow">the documentation</a>清楚地说明了2.5是必要的。但是,文档似乎已经过时,因为在安装2.5并将系统设置为使用它之后,我出现了以下错误:</p>
<pre>
Error: Python 2.5 is not supported. Please use version 2.7.
</pre>
<p>好吧,回到2.7.5和我最初的错误。</p>
<p>我不确定这是否是Python代码中的一个bug(我猜不会,因为它已经发布了一个月)、Python安装的问题,或者关于我的系统的其他一些没有按照Google的期望配置的问题。</p>
<p>除非有必要,否则我不想弄乱<code>dev_appserver.py</code>代码,但我很乐意深入研究它,以帮助找出问题所在。错误在第194行;以下是第190-195行:</p>
<pre class="lang-python prettyprint-override"><code># AF_INET or AF_INET6 socket
# Get the correct address family for our host (allows IPv6 addresses)
host, port = self.bind_addr
try:
info = socket.getaddrinfo(host, port, socket.AF_UNSPEC,
socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
</code></pre>
<p>我已经确定包含方法被调用了两次。第一次<code>host</code>总是<code>"127.0.0.1"</code>,而<code>port</code>是<code>0</code>。第二次是崩溃;<code>host</code>总是<code>10</code>(一个int,而不是字符串),而<code>port</code>是一个看似随机的五位数int</p>
<p>我已经尝试过将<code>host</code>硬编码为<code>"127.0.0.1"</code>,将<code>port</code>硬编码为<code>8080</code>或<code>0</code>,但后来又出现了另一个错误。我觉得自己被蒙在鼓里,我怀疑我不会通过改变我不太明白的事情来解决真正的问题。在谷歌上搜索错误信息没有帮助。</p>