Mac OS X 10.6.2(Snow Leopard)のGoogle App Engine for Python(ローカル)で、urllibが使えない...??
GAE for Python(ローカル)にてurllibが動かない!
- 11.4 urllib -- URL による任意のリソースへのアクセス
http://www.python.jp/doc/2.4/lib/module-urllib.html
PythonをGAE、経由させなければ動くのに。。なぜ・・?
めちゃめちゃハマって、なんとかフィックス出来たので、
メモ代わり解決策を載せます。
- なにも変哲もないただのurlをopenするプログラム
import urllib def main(): url = "http://www.google.com/" result = urllib.urlopen(url) print result.read() if __name__ == '__main__': main()
しかし、こんなエラーが↓↓↓↓↓↓
- エラーログ
Traceback (most recent call last): File "/Library/WebServer/CGI-Executables/python/google_appengine/google/appengine/tools/dev_appserver.py", line 3177, in _HandleRequest self._Dispatch(dispatcher, self.rfile, outfile, env_dict) File "/Library/WebServer/CGI-Executables/python/google_appengine/google/appengine/tools/dev_appserver.py", line 3120, in _Dispatch base_env_dict=env_dict) File "/Library/WebServer/CGI-Executables/python/google_appengine/google/appengine/tools/dev_appserver.py", line 515, in Dispatch base_env_dict=base_env_dict) File "/Library/WebServer/CGI-Executables/python/google_appengine/google/appengine/tools/dev_appserver.py", line 2379, in Dispatch self._module_dict) File "/Library/WebServer/CGI-Executables/python/google_appengine/google/appengine/tools/dev_appserver.py", line 2289, in ExecuteCGI reset_modules = exec_script(handler_path, cgi_path, hook) File "/Library/WebServer/CGI-Executables/python/google_appengine/google/appengine/tools/dev_appserver.py", line 2185, in ExecuteOrImportScript exec module_code in script_module.__dict__ File "/Library/WebServer/CGI-Executables/python/google_appengine/aws/main.py", line 10, in <module> main() File "/Library/WebServer/CGI-Executables/python/google_appengine/aws/main.py", line 5, in main result = urllib.urlopen(url) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 82, in urlopen opener = FancyURLopener() File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 611, in __init__ URLopener.__init__(self, *args, **kwargs) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 129, in __init__ proxies = getproxies() File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 1558, in getproxies return getproxies_environment() or getproxies_macosx_sysconf() File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 1448, in getproxies_macosx_sysconf from ctypes import cdll File "/Library/WebServer/CGI-Executables/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1264, in Decorate return func(self, *args, **kwargs) File "/Library/WebServer/CGI-Executables/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1914, in load_module return self.FindAndLoadModule(submodule, fullname, search_path) File "/Library/WebServer/CGI-Executables/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1264, in Decorate return func(self, *args, **kwargs) File "/Library/WebServer/CGI-Executables/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1816, in FindAndLoadModule description) File "/Library/WebServer/CGI-Executables/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1264, in Decorate return func(self, *args, **kwargs) File "/Library/WebServer/CGI-Executables/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1767, in LoadModuleRestricted description) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ctypes/__init__.py", line 10, in <module> from _ctypes import Union, Structure, Array ImportError: No module named _ctypes
- 早速、調べてみよ!!
ほうほう。同じ悩みの人発見!
Import Error: Failed to import ctypes to load dll on windows@Google Code
どうやらGAEではpython 2.6のurllibが動かないらしい。。
しかも「Mac OS X 10.6.2」限定っぽい?
(原因は現在も調査中。。)
- 対策!!
ってことは、Python 2.5から動かせばいいってことね。
Pythonのパスを2.6から2.5に変更してもいいけど、
他のところで影響が出たらイヤなので、
GAEの起動時のPythonを2.5から起動するようにしよー
-
- 通常
$ ./dev_appserver.py src/
-
- 今回
$ /usr/bin/python2.5 ./dev_appserver.py src/
参考URL : Feed parser error - _ctypes - broke in 1.2.5 and Snow Leopard
これで動いたよー
あーよかったよかった。ハマったハマった。。
さー作業の続きやろw