我在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'没有可用的定位符
答案 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/'
(注意:没有尝试过,只是为其他用户发帖作为备用。如果有人确认其工作正常,请发表评论。)