我在Windows,python 2.7和virtualenv上使用GAE沙箱。 当我尝试使用Requests lib时,我收到以下错误:
global name '_dlopen' is not defined
完整筹码:
INFO 2017-09-20 13:40:20,551 module.py:821] default: "GET / HTTP/1.1" 500
from ctypes import (c_buffer, POINTER, byref, create_unicode_buffer,
File "c:\python27\Lib\ctypes\__init__.py", line 450, in <module>
pythonapi = PyDLL(None)
File "c:\python27\Lib\ctypes\__init__.py", line 362, in __init__
self._handle = _dlopen(self._name, mode)
NameError: global name '_dlopen' is not defined
Windows上的GAE确实存在加载ctypes和winreg的问题,但它现在自动在开发环境中列入白名单。
我错过了什么?
答案 0 :(得分:1)
所以我找到了导致这个问题的原因: 这是https://stackoverflow.com/a/25915535/3767514
中建议的解决方法问题是更改os.name=None
意味着ctypes无法使用正确的dll加载库。
ctypes init 第457行:
if _os.name in ("nt", "ce"):
windll = LibraryLoader(WinDLL)
所以解决方案是导入ctypes,然后在appengine_config.py中将os.name更改为None:
import os
if os.name == 'nt':
import ctypes
os.name = None