8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

FileNotFoundError:[Errno 2] 没有这样的文件或目录:“app/mlsample/model/clf.joblib”

Parm 2月前

205 0

我现在正在尝试构建我的 docker 镜像我有我的 app.py:import pandas as pdfrom flask import Flask, request, render_templateimport osfrom joblib import loadMODEL_DIR = os.environ[\'MODEL...

我现在正在尝试构建我的docker镜像我有我的app.py:

import pandas as pd
from flask import Flask, request, render_template
import os
from joblib import load

MODEL_DIR = os.environ["MODEL_DIR"]
MODEL_FILE = os.environ["MODEL_FILE"]
METADATA_FILE = os.environ["METADATA_FILE"]
MODEL_PATH = os.path.join(MODEL_DIR, MODEL_FILE)
METADATA_PATH = os.path.join(MODEL_DIR, METADATA_FILE)

app = Flask(__name__)

#Loading model
clf = load(MODEL_PATH)

@app.route('/', methods=['GET', 'POST'])
def index():
    result = ''
    text = ''
    #print(clf.predict(["I am angry"]))
    if request.method == 'POST':
        text = request.form.get("textTocompute")
        result = clf.predict([text])
    return render_template("index.html", result=result, text=text)
    
if __name__ == "__main__":
    app.run(host='0.0.0.0')

要求.txt:flaskjoblibnumpypandasmatplotlibscikit-learn

和Dockerfile:

FROM python:3.6

WORKDIR /app

RUN mkdir ./mlsample

RUN mkdir ./mlsample/model

ENV MODEL_DIR=app/mlsample/model

ENV MODEL_FILE=clf.joblib

ENV METADATA_FILE=metadata.json

ENV FLASK_APP=app.py

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY reviewDataCleaned.csv .

COPY docker-ml.py .

RUN python ./docker-ml.py

COPY app.py .

COPY templates ./templates

EXPOSE 5000

CMD ["python", "app.py"]

我想构建这个但是我收到此错误:

=> 错误 [ 9/11] 运行 python ./docker-ml.py 32.8s

[ 9/11] RUN python ./docker-ml.py:                                                                                   
32.42 Loading reviewDataCleaned dataset...                                                                              
32.42 fitting model                                                                                                     
32.42 Serializing model to app/mlsample/model/clf.joblib                                                                
32.42 Traceback (most recent call last):                                                                                
32.42   File "./docker-ml.py", line 54, in <module>
32.42     dump(clf,MODEL_PATH)
32.42   File "/usr/local/lib/python3.6/site-packages/joblib/numpy_pickle.py", line 481, in dump
32.42     with open(filename, 'wb') as f:
32.42 FileNotFoundError: [Errno 2] No such file or directory: 'app/mlsample/model/clf.joblib'

Dockerfile:25

  23 |     COPY docker-ml.py .
  24 |     
  25 | >>> RUN python ./docker-ml.py
  26 |     
  27 |     COPY app.py .
--------------------
ERROR: failed to solve: process "/bin/sh -c python ./docker-ml.py" did not complete successfully: exit code: 1

我该如何修复它?

帖子版权声明 1、本帖标题:FileNotFoundError:[Errno 2] 没有这样的文件或目录:“app/mlsample/model/clf.joblib”
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Parm在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这是实际的错误:

    FileNotFoundError: [Errno 2] No such file or directory: 'app/mlsample/model/clf.joblib'
    

    Docker 容器找不到文件 app/mlsample/model/clf.joblib 。我假设脚本本身应该创建该文件,因此我倾向于认为问题出在 Dockerfile 中的这一行:

    ENV MODEL_DIR=app/mlsample/model
    

    您设置 MODEL_DIR 为相对路径。结果最终为 Docker WORKDIR + MODEL_DIR ,因此 /app/app/mlsample/model 。尝试设置 MODEL_DIR 为正确的相对路径,或设置为绝对路径,即:

    # Absolute path
    ENV MODEL_DIR=/app/mlsample/model
    
    # Or path relative to the WORKDIR
    ENV MODEL_DIR=mlsample/model
    
  • 我正在使用 Ubuntu 14.04 LTS 和内核版本 3.13.11.4。我尝试加载修补的 KVM 模块 kvm 和 kvm-intel,但出现以下错误 kvm:模块验证失败:签名...

    我正在使用 Ubuntu 14.04 LTS 内核版本 3.13.11.4 .
    我正在尝试加载已修补的 KVM 模块 kvm kvm-intel 但收到以下错误

    kvm: module verification failed: signature 和/or required key missing - tainting kernel
    and kvm: module has bad taint, not creating trace events .

    使用的源与创建我当前运行的图像的源相同。
    我已经检查了符号并确保错误不是由于未包含 EXPORT_SYMBOL_GPL() 在我导出函数的修补文件中而导致的。

    我也看到了一些关于不同内核版本导致此错误的内容,但我使用与创建修补的 kvm 模块相同的源来构建启动内核。
    一切都编译成功,没有任何警告。任何帮助都非常感谢!

  • 您的系统供应商似乎已在您的内核上启用了 内核模块签名验证, 这意味着它不会加载任何供应商未签名的模块。换句话说,您的修补模块未正确签名,内核将拒绝加载它。

    这样做的目的是为了防止恶意软件和 rootkit 加载恶意内核模块。

    我建议你联系你的供应商。你的平台上可能有一个选项可以禁用签名检查。否则,你的供应商可能能够为你签署模块。你甚至可能拥有密钥和签名验证算法的详细信息,并且可以自己签署。

    如果不知道您在什么平台上运行,就很难给出更具体的建议。

  • 我有这段代码,但是它没有在 WaitForSeconds() 中等待,只有 Debug.Log(\'Starting hit animation\');otherAnimator.SetBool(\'isHitten\', true);正在使用 System 完成。

    我有这段代码,但它没有在 WaitForSeconds() 中等待,只有 Debug.Log(\'Starting hit animation\');otherAnimator.SetBool(\'isHitten\', true);正在完成

    
    using System.Collections;
    using UnityEngine;
    
    public class Pikes : MonoBehaviour
    {
        public int damage = 1;
        public float speed;
        public GameObject effect;
        GameObject player;
        Animator otherAnimator;
    
        void Start()
        {
            player = GameObject.FindWithTag("Player");
            otherAnimator = player.GetComponent<Animator>();
        }
    
        private void Update()
        {
            transform.Translate(Vector3.left * speed);
    
             if(Input.GetKeyDown(KeyCode.R))
            {
    
                otherAnimator.SetBool("isHitten", false);
            }
        }
    
        private void OnTriggerEnter2D(Collider2D other)
        {
            if (other.CompareTag("Player"))
            {
                StartCoroutine(HandleHitAnimation());
                other.GetComponent<Player>().health -= damage;
                Instantiate(effect, transform.position, Quaternion.identity);
                Destroy(gameObject);
            }
        }
    
        private IEnumerator HandleHitAnimation()
         {
            Debug.Log("Starting hit animation");
            otherAnimator.SetBool("isHitten", true);
            yield return new WaitForSeconds(1);
           Debug.Log("Ending hit animation");
            otherAnimator.SetBool("isHitten", false);
         }
    }
    
    

    帮助修复此问题并使 waitforseconds 正常工作。

  • 使用此页面签署我的模块 wiki.gentoo.org/wiki/Signed_kernel_module_support

  • 无需重新配置内核, module verification failed 模块本身的 CONFIG_MODULE_SIG=n 顶部 Makefile 添加一行即可解决此错误()

    CONFIG_MODULE_SIG=n
    
    # If KERNELRELEASE is defined, we've been invoked from the
    # kernel build system and can use its language.
    ifneq ($(KERNELRELEASE),)
        obj-m := hello.o
    
    # Otherwise we were called directly from the command
    # line; invoke the kernel build system.
    else
        KERNELDIR ?= /lib/modules/$(shell uname -r)/build
        PWD := $(shell pwd)
    
    default:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
    endif
    
  • 你试过了吗?我发现添加 \'CONFIG_MODULE_SIG=n\' 仍然会打印 \'模块验证失败:缺少签名和/或所需密钥 - 污染内核\' 消息。

  • StartCoroutine(HandleHitAnimation());
    

    这将在附加了 \'Pikes\' 脚本的游戏对象上启动协程。然后,协程会在每帧的指定时间运行,此时轮到该对象进行更新(简化)。

    Destroy(gameObject);
    

    在下面,启动协程后,您将销毁执行协程的游戏对象。这意味着,协程也将被销毁,并且永远没有机会执行。要么稍后销毁游戏对象,要么在此时尚未销毁的另一个游戏对象上执行协程。

  • 我同时使用 Suse(3.12) 和 RHEL 7(3.10.0),结果相同。我也在 kernelnewbies.org 上讨论过这个问题,但现在似乎没有令人满意的答案。你能帮忙检查一下这个邮件主题吗?非常感谢!

  • 我同意。正如你写的代码一样,计算机销毁对象的速度比协程运行的速度要快一点(比如快 1 秒)。它将销毁命令置于暂停协程的命令之前(老实说,我认为协程甚至没有到达起跑线。无论发生什么,你都要在 OnTriggerEnter 中实例化命中效果。为什么不将该命令与 Destroy( x ) 一起直接放入协程中呢?如下所示:

    if (other.CompareTag("Player"))
            {
                other.GetComponent<Player>().health -= damage;
                StartCoroutine(HandleHitAnimation());
            }
    private IEnumerator HandleHitAnimation()
         {
            Instantiate(effect, transform.position, Quaternion.identity);
            otherAnimator.SetBool("isHitten", true);
            yield return new WaitForSeconds(1);
            otherAnimator.SetBool("isHitten", false);
            Destroy(gameObject);
         }
    

    看看这是否能清理干净。如果没有,请将 Destroy 命令放在一边,并在这些函数执行后从其他地方调用它。

    祝你玩得开心,老兄。

  • 引用 12

    对于我来说,这绝对适用于不同的模块:rtl8188 和 Ubuntu 15.1

  • 引用 13

    可能不希望物体在被击中后还在附近徘徊……你的玩家可能会与它发生多次碰撞,从而导致不良行为

  • A N 2月前 0 只看Ta
    引用 14

    多么糟糕的答案!定义 CONFIG_MODULE_SIG=n 会导致在编译模块时对 module.h 进行不正确的解析。内核和模块的结构布局将出现分歧。为什么这里有这么多赞成票?

  • 我是 Linux、js 和 node.js 开发的新手,所以如果这个问题很愚蠢,我很抱歉...但是。我在本地测试服务器上有我的第一个应用程序。当我转到包含代码的文件夹并输入 npm start 时,一切都...

    我是 Linux、js 和 node.js 开发的新手,所以如果这个问题很愚蠢,我很抱歉...但是。

    我在本地测试服务器上有我的第一个应用程序。当我进入包含代码的文件夹并输入 npm start 时,一切都正常工作。但我想在后台运行它并使用 systemctl 来使用该应用程序。但是当我使用 sudo systemctl start \'my app\' 时,我得到了

    请帮我 :/

    意外的标记 '。'

    Stopping My Eclipse Application... eclipse.service: Deactivated successfully. Stopped My Eclipse Application. Started My Eclipse Application. [email protected] start nodemon server.js [nodemon] 3.1.0 [nodemon] to restart at any time, enter `r\>
    \[nodemon\] watching path(s): *.*
    \[nodemon\] watching extensions: js,mjs,cjs,\>
    \[nodemon\] starting `node server.js`
    /var/www/projects/eclipse/node_modules/mon\>
    session: options?.session,
    ^
    SyntaxError: Unexpected token '.'
    at wrapSafe (internal/modules/cjs/load\>
    at Module.\_compile (internal/modules/c\>
    at Object.Module.\_extensions..js (inte\>
    at Module.load (internal/modules/cjs/l\>
    at Function.Module.\_load (internal/mod\>
    at Module.require (internal/modules/cj\>
    at require (internal/modules/cjs/helpe\>
    at Object.\<anonymous\> (/var/www/projec\>
    at Module.\_compile (internal/modules/c\>
    at Object.Module.\_extensions..js (inte\>
    \[nodemon\] app crashed - waiting for file c\>\
    
    

    。服务

    [Unit]
    Description=My Eclipse Application
    
    [Service]
    ExecStart=/usr/bin/npm start
    WorkingDirectory=/var/www/projects/eclipse
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    Node.js v20.12.2.nodemon -v3.1.0nvm -v0.39.7

    我尝试更新 nvm、nodemon、node。仅从 app 文件夹运行 nvm start 之类的命令。

  • 当他进入 Pike 对撞机时,我刚刚在玩家脚本中做了这个,并且成功了 xD :),谢谢大家!

  • @IlyaMatveychikov 我记得在 Ubuntu 14.04 上构建 Linux 设备驱动程序中的一些示例模块失败时尝试解决这个问题。我发现它对我来说很有效,而无需对 Ubuntu 默认内核进行任何更改。我想你知道一个更好的方法 - 你介意发布一个答案来解决这个问题吗?我猜其他人也遇到了这个问题(虽然它可能不适用于较新的内核 - 不确定)

  • 转到内核源目录并执行(例如):

    ./scripts/sign-file sha512 ./signing_key.priv ./signing_key.x509 /lib/modules/3.10.1/kernel/drivers/char/my_module.ko
    

    对于内核 4.4.*,密钥位置应如下:

    ./scripts/sign-file sha512 ./certs/signing_key.pem ./certs/signing_key.x509 path/to/your/kernel/module.ko 
    

    并读取 .config 来检查内核正在使用的摘要算法 CONFIG_MODULE_SIG

    CONFIG_MODULE_SIG=y CONFIG_MODULE_SIG_ALL=y CONFIG_MODULE_SIG_SHA512=y CONFIG_MODULE_SIG_HASH="sha512"
    

    注意:如果你正在使用未构建的现有内核,请通过查看相应的配置文件(主要是 /proc/* 或 ) /boot/* 。对于 Ubuntu 来说,在 /boot/config-$(uname -r) .

  • 如果你有一个(非常过时的?)系统节点,请将其卸载以避免混淆——此服务可能未使用你通过 nvm 安装的节点。然后使用

  • 引用 20

    @Ry- 所以我尝试运行 sudo apt-get remove nodejs 然后 nvm which node [Unit] Description=My Eclipse Application [Service] ExecStart=/home/polakon/.nvm/versions/node/v20.12.2/bin/node/npm start WorkingDirectory=/var/www/projects/eclipse Restart=always [Install] WantedBy=multi-user.target 但这没有帮助 再次.. 我对此很陌生

返回
作者最近主题: