【问题标题】:Import error when restructuring test application using Flask使用 Flask 重构测试应用程序时导入错误
【发布时间】:2021-09-21 17:19:49
【问题描述】:

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

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'

setup.py

from setuptools import setup

setup(
    name='passless',
    packages=['passless'],
    include_package_data=True,
    install_requires=[
        'flask',
    ],
)

__init__.py

from flask import Flask
app = Flask(__name__)

import passless.views

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']

这是我使用的目录结构:

/passless
    setup.py
    /passless
        __init__.py
        index.py
        /static
            style.css
        /templates
            layout.html
            index.html
            login.html

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"]

【问题讨论】:

    标签: python flask


    【解决方案1】:

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

    from passless import app
    
    @app.route('/')
    def index():
        return 'Hello World!'
    

    目录结构:

    /passless
        docker-compose.yaml
        Dockerfile
        setup.py
        /passless
            __init__.py
    -       index.py
    +       views.py
    

    【讨论】:

      【解决方案2】:

      https://stackoverflow.com/a/15368107/16409598 这会解决你的问题,我不是python的忠实粉丝,但按照你的话逻辑上来说,

      *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'*
      
      you are trying to load/use a file that does not exist, try creating the file then calling it, or maybe import passless.py!
      
      **REMINDER: I AM NOT a fan of python, just here to help :)**
      Best Regards
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        • 2017-04-29
        • 2019-07-21
        • 1970-01-01
        • 2020-06-27
        • 1970-01-01
        • 2019-02-08
        相关资源
        最近更新 更多