如何让 PySoundfile 在 Google Cloud Platform 柔性环境中运行? [关闭]
Posted
技术标签:
【中文标题】如何让 PySoundfile 在 Google Cloud Platform 柔性环境中运行? [关闭]【英文标题】:How can I get PySoundfile to run on Google Cloud Platform flexible environment? [closed] 【发布时间】:2019-02-07 19:16:52 【问题描述】:我想将一个简单的应用程序部署到 GAE 标准或灵活的环境中,它需要生成简单的音频文件。
我的代码使用 PySoundfile 在本地(在开发服务器上)运行良好,但在部署应用程序时遇到了底层 libsndfile
的错误。
Traceback (most recent call last):
File "/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 578, in spawn_worker
worker.init_process()
File "/env/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 126, in init_process
self.load_wsgi()
File "/env/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 135, in load_wsgi
self.wsgi = self.app.wsgi()
File "/env/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/env/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
return self.load_wsgiapp()
File "/env/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
return util.import_app(self.app_uri)
File "/env/local/lib/python2.7/site-packages/gunicorn/util.py", line 352, in import_app
__import__(module)
File "/home/vmagent/app/main.py", line 3, in <module>
import tonegen
File "/home/vmagent/app/tonegen.py", line 4, in <module>
import soundfile as sf
File "/env/local/lib/python2.7/site-packages/soundfile.py", line 267, in <module>
_snd = _ffi.dlopen('sndfile')
File "/env/local/lib/python2.7/site-packages/cffi/api.py", line 141, in dlopen
lib, function_cache = _make_ffi_library(self, name, flags)
File "/env/local/lib/python2.7/site-packages/cffi/api.py", line 802, in _make_ffi_library
backendlib = _load_backend_lib(backend, libname, flags)
File "/env/local/lib/python2.7/site-packages/cffi/api.py", line 797, in _load_backend_lib
raise OSError(msg)
OSError: ctypes.util.find_library() did not manage to locate a library called 'sndfile'
我也尝试过wave,但没有成功。
【问题讨论】:
【参考方案1】:在灵活的环境中,您可以尝试构建和使用自定义运行时,您可以在其中添加非 python 依赖项,例如操作系统库(libsndfile
在您的情况下以及您可能需要的任何其他内容)。
与How oracle jdk can be configured in Google App Engine Flexible environment中的答案基本相同。
【讨论】:
在这个页面上,它说自定义运行时不支持 GAE API:cloud.google.com/appengine/docs/flexible/python/… 这是否意味着如果我们使用这种方法,我们就不能使用 GCP 数据存储? 我认为这意味着您不能使用ndb
客户端库(对于非自定义 flex 应用程序也是如此)。但是可以从任何 python 应用程序使用数据存储(使用通用客户端库),甚至可以从谷歌云外部使用,请参阅***.com/a/49124207/4495081。
这行得通。使用了 GAE flex + 一个基于 gcr.io/google-appengine/python 的自定义 python 运行时,它允许使用数据存储、烧瓶以及安装所需的库。以上是关于如何让 PySoundfile 在 Google Cloud Platform 柔性环境中运行? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何让 CMake 在 Windows 上找到 google protobuf?