如何在 Google Cloud Platform 灵活环境中将 PySoundfile 获取到 运行?

How can I get PySoundfile to run on Google Cloud Platform flexible environment?

我有一个简单的应用程序,我想将其部署到 GAE 标准或灵活的环境中,它需要生成简单的音频文件。

我的代码 运行 在本地(在开发服务器上)使用 PySoundfile 很好,但是我 运行 在应用程序时 libsndfile 与底层 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失败了。

在灵活的环境中,您可以尝试构建和使用自定义运行时,您可以在其中添加非 python 依赖项,例如 OS 库(在您的情况下为 libsndfile 和你可能需要的任何其他东西)。

基本上与中的答案相同。