使用 Flask 重构测试应用程序时导入错误

xil*_*il3 4 python flask

我一直按照以下网站上的说明进行操作:

https://flask.palletsprojects.com/en/2.0.x/patterns/packages/

我收到以下错误:

web_1  | Error: While importing 'passless', an ImportError was raised:
web_1  |
web_1  | Traceback (most recent call last):
web_1  |   File "/usr/local/lib/python3.9/site-packages/flask/cli.py", line 256, in locate_app
web_1  |     __import__(module_name)
web_1  |   File "/app/passless/__init__.py", line 4, in <module>
web_1  |     import passless.views
web_1  | ModuleNotFoundError: No module named 'passless.views'
Run Code Online (Sandbox Code Playgroud)

安装程序.py

from setuptools import setup

setup(
    name='passless',
    packages=['passless'],
    include_package_data=True,
    install_requires=[
        'flask',
    ],
)
Run Code Online (Sandbox Code Playgroud)

__init__.py

from flask import Flask
app = Flask(__name__)

import passless.views
Run Code Online (Sandbox Code Playgroud)

docker-compose.yaml

version: "3"
services:
  web:
    build: .
    image: passless
    environment:
      FLASK_DEBUG: 1
      FLASK_APP: passless
      FLASK_ENV: development
    ports: ['5001:5000']
    volumes: ['.:/app']
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的目录结构:

/passless
    setup.py
    /passless
        __init__.py
        index.py
        /static
            style.css
        /templates
            layout.html
            index.html
            login.html
Run Code Online (Sandbox Code Playgroud)

Dockerfile:

# syntax=docker/dockerfile:1

FROM python:3.9-slim-buster

WORKDIR /app

COPY . .

RUN pip3 install -e .

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)

aar*_*ron 6

将index.py重命名为(或添加)views.py:

from passless import app

@app.route('/')
def index():
    return 'Hello World!'
Run Code Online (Sandbox Code Playgroud)

目录结构:

/passless
    docker-compose.yaml
    Dockerfile
    setup.py
    /passless
        __init__.py
-       index.py
+       views.py
Run Code Online (Sandbox Code Playgroud)