首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImportError:没有名为烧瓶的模块

ImportError:没有名为烧瓶的模块
EN

Stack Overflow用户
提问于 2021-04-27 12:32:12
回答 1查看 1.2K关注 0票数 1

我正在努力完成我的学校作业,那就是:

https://github.com/aaronjolson/flask-pytest-example

  • Write Jenkinsfile,Dockerfile ->导致了一个新的标记在您的dockerhub

  • 拉坞器

  • 构建对接器

  • 运行对接器

112curl localhost:5000查看结果H 213/code>G 214

目前,我正处于第5阶段,当我试图运行一个码头映像时,我得到了这个错误:

代码语言:javascript
复制
Traceback (most recent call last):

File "app.py", line 1, in <module>

from flask import Flask

ImportError: No module named flask

配置:

Windows

  • Jenkinsfile:

  1. Jenkins正在开发Debian 9
  2. ,使用docker来提取和运行码头映像。

代码语言:javascript
复制
it@debian:~/flask-pytest-example$ cat Jenkinsfile
pipeline {
    environment {
        registry = "tslaceo/flask-pytest"
        imageName = 'flask-pytest'
        registryCred = 'tslaceo'
        gitProject = "https://github.com/tslaceo/flask-pytest-example.git"
    }
    agent any
    options {
        timeout(time: 1, unit: 'HOURS')
    }
    stages {
        stage ('preparation') {
            steps {
                deleteDir()
            }
        }
        stage ('get src from git') {
            steps {
                git 'https://github.com/tslaceo/flask-pytest-example.git'
            }
        }
        stage ('build docker') {
            steps {
                script {
                    dockerImage = docker.build registry + ":$BUILD_NUMBER"
                }
            }
        }
        stage ('docker publish') {
            steps {
                script {
                    docker.withRegistry( '', registryCred ) {
                        dockerImage.push()
                    }
                }
            }
        }
        stage ('cleaning') {
            steps {
                sh "docker rmi $registry:$BUILD_NUMBER"
            }
        }
    }
}

  1. Dockerfile:

代码语言:javascript
复制
it@debian:~/flask-pytest-example$ cat Dockerfile
FROM python
WORKDIR /flask-pytest-example
RUN python --version
RUN pip freeze > requirements.txt
RUN pip install --upgrade pip && pip install -r requirements.txt
COPY . .
CMD ["python", "-u", "app.py"]

  1. requirements.txt

代码语言:javascript
复制
it@debian:~/flask-pytest-example$ cat requirements.txt
flask
pytest

  1. ls -la

代码语言:javascript
复制
it@debian:~/flask-pytest-example$ ls -la
total 52
drwxr-xr-x  5 it it 4096 Apr 27 15:28 .
drwxr-xr-x 19 it it 4096 Apr 27 14:42 ..
-rw-r--r--  1 it it  178 Apr 27 10:32 app.py
-rw-r--r--  1 it it  202 Apr 27 15:06 Dockerfile
-rw-r--r--  1 it it  152 Apr 27 12:39 Dockerfile.save
drwxr-xr-x  8 it it 4096 Apr 27 15:06 .git
-rw-r--r--  1 it it   38 Apr 27 10:32 .gitignore
drwxr-xr-x  2 it it 4096 Apr 27 10:32 handlers
-rw-r--r--  1 it it    0 Apr 27 10:32 __init__.py
-rw-r--r--  1 it it 1147 Apr 27 10:48 Jenkinsfile
-rw-r--r--  1 it it 1071 Apr 27 10:32 LICENSE
-rw-r--r--  1 it it  491 Apr 27 10:32 README.md
-rw-r--r--  1 it it   13 Apr 27 10:32 requirements.txt
drwxr-xr-x  2 it it 4096 Apr 27 10:32 tests
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-27 12:47:04

删除RUN pip freeze ...行;将其替换为COPY requirements.txt .,以获取与应用程序其他部分签入的文件的副本。

您显示的Dockerfile中的流是

从一个干净的、空的Python installation;

  • List开始--安装在那里的所有包(即空包)--并将requirements.txt.

中列出的所有包(即空包)写入requirements.txt;

  • Install。

应该将requirements.txt文件作为应用程序源代码的一部分签入,因此如果您将它放入其中而不是重新生成它,那么它将包含其中列出的包,并且它将是您在非Docker虚拟环境中测试的包的确切版本。

我可能会把基于Jenkins的构建设置作为这个序列中的最后一件事。一个更好的办法可以是:

  1. 使用普通的
  2. 虚拟环境构建应用程序;没有Jenkins,也没有Docker。

python3 -m venv venv .venv/bin/激活pip安装-r requirements.txt pytest ./app.py curl requirements.txt

使用上面显示的Dockerfile,

  1. 将您构建的、正在工作的、经过测试的Python应用程序封装在一个Docker容器中。

码头建造-t tslaceo/瓶-pytest。docker run -p 5000:5000 tslaceo/烧瓶-pytest curl -p

  1. 在Jenkins包扎这个装置.

如果您的应用程序有问题(这是通常的情况),虚拟环境设置将更容易调试,并且您可以使用普通编辑器、IDE、调试器等,而无需任何特殊设置。如果您的打包有问题,那么在本地运行docker build将比在CI环境中尝试再现它更容易调试和调整。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67283112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档