RuntimeError:无法缓存函数“ __jaccard”:文件“ /usr/local/lib/python3.7/site-packages/librosa/util/matching.py”没有定位符

时间:2019-07-11 18:20:54

标签: docker numba librosa

我在Windows10机器上对Flask应用程序进行了docker.docker运行后出现以下错误

RuntimeError:无法缓存功能'__jaccard':文件'/usr/local/lib/python3.7/site-packages/librosa/util/matching.py'没有定位符

flask应用程序在我的计算机上本地运行良好。

我提到过类似的帖子:numba caching issue: cannot cache function / no locator available for file

我已在Dockerfile中添加了该应用程序的用户访问权限。

1。 Dockerfile

从python:3.7.3

运行useradd管理员

复制。 / app

WORKDIR / app

运行pip install -r“ requirements.txt”

RUN chown -R admin:admin / app

运行chmod 755 / app

用户管理员

ENTRYPOINT [“ python”]

CMD [“ app.py”]

2。 requirements.txt

烧瓶 张量流 flask_cors uid librosa 麻巴 pysound文件 麻木 cffi 要求 波 h5py pydub werkzeug

3。错误日志:

回溯(最近通话最近):   在第6行的文件“ app.py”中     进口librosa   在第13行的“ /usr/local/lib/python3.7/site-packages/librosa/init.py”文件中     来自。导入核心

文件“ /usr/local/lib/python3.7/site-packages/librosa/core/init.py”,第114行,在     来自.time_frequency import *#pylint:disable =通配符导入

文件“ /usr/local/lib/python3.7/site-packages/librosa/core/time_frequency.py”,第10行,在     从..util.exceptions导入ParameterError

文件“ /usr/local/lib/python3.7/site-packages/librosa/util/init.py”,第70行,在     来自.matching import *#pylint:disable = wildcard-import

文件“ /usr/local/lib/python3.7/site-packages/librosa/util/matching.py”,第16行,在     @ numba.jit(nopython = True,缓存= True)   包装中的文件“ /usr/local/lib/python3.7/site-packages/numba/decorators.py”,行179     disp.enable_caching()

enable_caching中的文件“ /usr/local/lib/python3.7/site-packages/numba/dispatcher.py”,第571行     self._cache = FunctionCache(self.py_func)

初始化中的文件“ /usr/local/lib/python3.7/site-packages/numba/caching.py”,第614行     self._impl = self._impl_class(py_func)

init 中的文件“ /usr/local/lib/python3.7/site-packages/numba/caching.py”,第349行     “对于文件%r”%(名称,source_path))

RuntimeError:无法缓存功能'__jaccard':文件'/usr/local/lib/python3.7/site-packages/librosa/util/matching.py'没有可用的定位符

2 个答案:

答案 0 :(得分:1)

我已经通过安装旧版本解决了这个问题。

pip install librosa==0.6.0

答案 1 :(得分:0)

我提出另一个答案:创建用于在容器中运行内容的.yaml模板时,请进行以下设置:

spec:
  template:
    spec:
      priorityClassName: <priority class>
      containers:
        - name: playaround
          image: <image_path>
          imagePullPolicy: "IfNotPresent"
          env:
            - name: NUMBA_CACHE_DIR
              value: "/misc/numba_cache" <-- choose any category that can be accessed from the container

通过这种方式,我设置了环境变量,因此numba具有用于缓存的位置。


编辑:尝试在脚本中设置环境变量:

import os
os.environ[ 'NUMBA_CACHE_DIR' ] = '/tmp/'

(注意:没有尝试过,只是为其他用户发帖作为备用。如果有人确认其工作正常,请发表评论。)