python - 将 flask 项目从 python2 更新到 python3

标签 python python-3.x flask

我的小 flask 项目在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

运行.py:

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

应用程序/__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 新手,需要帮助:)

最佳答案

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

from .app1.app1 import mod as app1

前导 . 表示其余部分与当前包相关,或者

from app.app1.app1 import mod as app1

参见 PEP 328 - Imports: Multi-Line and Absolute/Relative .

不过,您可能还会遇到其他问题。移植不是那么简单,请阅读 Porting to Python 3 book 中的问题。 .这个问题是a common migration problem .

关于python - 将 flask 项目从 python2 更新到 python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31239911/

相关文章:

Python 可扩展聊天服务器

python-3.x - 调度 Airflow TaskGroup抛出AttributeError

python - 在 for 循环中调用变量来创建列表(使用 np.sin/np.cos)

python - 找不到文件错误 : [Errno 2] No such file or directory: 'hdfs' : 'hdfs' using subprocess popen in crontab

javascript - AngularJS:页面加载时使用服务器数据更改输入值

python - 打开并读取多个文本文件并匹配单词

python - 使用 "min"的函数的水平集

python - 在 Pandas 系列中查找元素的索引

python - HttpsCallable 从 python 返回

python - 如何在 Auth0 Python Web 应用程序中获取 JWT?