相对进口不适用于“。”结构,即使文件位于同一目录中

时间:2019-01-31 01:32:16

标签: javascript python html

我正在研究flask应用程序,该应用程序将使用数据库并通过html渲染图表。发生一些错误,它找不到db / pets.sqlite来访问数据库并运行该应用程序。

这是返回的错误:

回溯(最近通话最近):   在第22行的文件“ app.py”中     从.models导入宠物 ModuleNotFoundError:没有名为“ 主要 .models”的模块; “ 主要”不是软件包

我需要克服这个问题,以便开发一个heroku应用程序。我搜索了其他线程,但没有真正有意义的搜索。 ... s目标是在应用py中提取数据库并导入数据库以使用127.0.0.1.5000 url启动应用。

如果我删除“。”从app.py和models.py导入数据库时​​崩溃...

为什么它会与“。”一起使用---文件是否在同一目录中?

测试3从MODELS.PY删除周期:“从.app import db”中没有句点:  在第20行的文件“ app.py”中    从模型导入Pet  在第1行的文件“ Pet_Pals_Refactor \ solved \ pet_pals \ models.py”中    从应用程序导入数据库  文件“ Pet_Pals_Refactor \ solved \ pet_pals \ app.py”,第20行,在    从模型进口宠物 ImportError:无法从“模型”中导入名称“宠物”

目录结构:

|_______[pet_pals]______
|           |   
|           |__________[db]__________
|           |               |
|           |           |_pets.sqlite
|           |           
|           |_______[static]_________
|           |           |
|           |           |______[css]____            
|           |           |       |
|           |           |       |_style.css
|           |           |
|           |           |______[js]_____            
|           |                   |
|           |                   |_app.js    
|           |                   
|           |
|           |_______[templates]______
|                       |
|                       |_______form.html       
|                       |
|                       |_______index.html
|                               
|
|______initdb.py
|______requirements.txt
|______run.sh   

------- initbd.py -------

from pet_pals.app import db

# db.drop_all()
db.create_all()

------ FROM app.py --------

导入必要的库

import os 
from flask import (
    Flask,
    render_template,
    jsonify,
    request,
    redirect)


app = Flask(__name__)

from flask_sqlalchemy import SQLAlchemy


db = SQLAlchemy(app)

app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', '') or 
"sqlite:///db/pets.sqlite"
# app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', '')


from models import Pet


# create route that renders index.html template
@app.route("/")
def home():
    return render_template("index.html")


# Query the database and send the jsonified results
@app.route("/send", methods=["GET", "POST"])
def send():
    if request.method == "POST":
        name = request.form["petName"]
        lat = request.form["petLat"]
        lon = request.form["petLon"]

        pet = Pet(name=name, lat=lat, lon=lon)
        db.session.add(pet)
        db.session.commit()
        return redirect("/", code=302)

    return render_template("form.html")


@app.route("/api/pals")
def pals():
    results = db.session.query(Pet.name, Pet.lat, Pet.lon).all()

    hover_text = [result[0] for result in results]
    lat = [result[1] for result in results]
    lon = [result[2] for result in results]

    pet_data = [{
        "type": "scattergeo",
        "locationmode": "USA-states",
        "lat": lat,
        "lon": lon,
        "text": hover_text,
        "hoverinfo": "text",
        "marker": {
            "size": 50,
            "line": {
                "color": "rgb(8,8,8)",
                "width": 1
            },
        }
    }]

    return jsonify(pet_data)


if __name__ == "__main__":
    app.run()

--------- initdb.py -------

from pet_pals.app import db

# db.drop_all()

db.create_all()

0 个答案:

没有答案