我一直在研究这个Udacity web dev course,并希望尝试使用this example将简单的散景图嵌入到网页中。运行dev_appserver.py会出现错误:
ERROR 2017-01-22 14:35:30,358 wsgi.py:263]
Traceback (most recent call last):
File "C:\Users\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform
\google_appengine\google\appengine\runtime\wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "C:\Users\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform
\google_appengine\google\appengine\runtime\wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "C:\Users\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform
\google_appengine\google\appengine\runtime\wsgi.py", line 85, in LoadObject
obj = __import__(path[0])
File "C:\Users\Google Drive\Udacity web development 2017\udacit
y-cs253\bokeh\1_docs_example\main.py", line 2, in <module>
from bokeh.plotting import figure
File "C:\Users\Google Drive\Udacity web development 2017\udacit
y-cs253\bokeh\1_docs_example\lib\bokeh\plotting\__init__.py", line 2, in <module
>
from ..document import Document; Document
File "C:\Users\Google Drive\Udacity web development 2017\udacit
y-cs253\bokeh\1_docs_example\lib\bokeh\document.py", line 45, in <module>
from .core.json_encoder import serialize_json
File "C:\Users\Google Drive\Udacity web development 2017\udacit
y-cs253\bokeh\1_docs_example\lib\bokeh\core\json_encoder.py", line 53, in <modul
e>
NP_MS_DELTA = np.timedelta64(1, 'ms')
TypeError: function takes at most 1 argument (2 given)
INFO 2017-01-22 14:35:30,571 module.py:806] default: "GET / HTTP/1.1" 500 -
我可能错了,但上述错误与this相结合表明Bokeh需要NumPy&gt; 1.6.1。具体来说,json_encoder.py
似乎需要NumPy&gt; 1.6.1。
然而Google App Engine only supports NumPy1.6.1。这是否意味着Bokeh实际上与GAE不兼容?
的app.yaml:
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: main.app
libraries:
- name: jinja2
version: latest
- name: numpy
version: "1.6.1"
答案 0 :(得分:1)
这是否意味着Bokeh与GAE实际上不兼容?
我想说这是对最近版本的一个相当准确的评估,例如Bokeh 0.12.4
。似乎NumPy 1.7.1
要求一直回到项目的开头。然而,有一段时间Bokeh对NumPy的依赖程度较低,所以你可能会对旧版本的Bokeh运气更好,1)没有安装NumPy,或者2)安装了较旧的GAE NumPy。我不能肯定地陈述这一点,你只需要试着看(YMMV)。
我可以说Bokeh核心团队中的AFAIK没有人使用过GAE,所以没有人知道NumPy的限制就不足为奇了。也许可以放宽NumPy版本以包含1.6.1
。我不确定,这需要一些调查,并且无法保证它是可行的。我们当然可以尝试考虑它,因为时间和资源允许,所以我鼓励你在Bokeh project issue tracker上提出问题。另一个合理的行动是请求GAE更新他们的白名单,因为NumPy 1.6.1
在这一点上相当古老。
答案 1 :(得分:0)
我试图在Google App Engine Flex上使用bokeh服务器,该服务器没有原始问题中引用的numpy版本限制。但是,即使使用更新的numpy,我仍然无法使其正常工作。最终,我在Google的问题跟踪器上找到了this 10 year old open issue。看起来Google App Engine缺少针对标准和灵活环境的Web套接字支持。由于bokeh服务器使用websocket进行通信,因此这可能是您看到失败的另一个原因。
有一个Google日期为2018年7月23日的评论,内容为:
大家好,我们在Flex Websockets Beta发布中取得了稳步的进展,并将很快推出。
Standard的Websocket至少需要一年的时间。我会在这里继续进行更新,因为我们会在时间表上更加清晰。
因此,很快就会有希望在App Engine上使用bokeh应用程序。