将Flask项目从python2更新到python3

我的小烧瓶项目通常在python2上运行,但是当我升级到python3时,遇到一些问题:

首先,我文件的树:

.
├── app
│   ├── app1
│   │   ├── app1.py
│   │   ├── __init__.py
│   ├── __init__.py
│   ├── templates
│        ├── base.html
│        └── index.html
├── config.py
├── README.md
├── requirements.txt
├── run.py
├── shell.py
└── test.db

run.py:

from app import app
app.run(debug=True)

app / __ init__.py:

from flask import Flask, url_for, render_template
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from flask.ext.sqlalchemy import SQLAlchemy
from flask_login import LoginManager

app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)

login_manager = LoginManager()
login_manager.init_app(app)

from app1.app1 import mod as app1

当我使用python2运行时:

 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat

没问题,但是在python3上:

Traceback (most recent call last):
  File "run.py", line 4, in <module>
    from app import app
  File "/home/chenhj/flask/multiapp/app/__init__.py", line 18, in <module>
    from app1.app1 import mod as app1
ImportError: No module named 'app1'

有人知道为什么吗?菜鸟到python3并需要帮助:)

马丁·彼得斯(Martijn Pieters)

您正在使用隐式相对导入(Python 2模型);您需要使用绝对引用或显式相对导入:

from .app1.app1 import mod as app1

前导.信号表明其余的是相对于当前程序包的,或者

from app.app1.app1 import mod as app1

请参阅PEP 328-导入:多行和绝对/相对

但是,您可能还会遇到其他问题。移植并不是那么简单,请阅读《移植到Python 3》一书中的问题此问题是常见的迁移问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章