【发布时间】:2021-05-14 05:11:29
【问题描述】:
我是 Flask 的新手,我正在使用 Flask 为我的团队开发一个小型 API。
早些时候,当我使用 python 3.8 和 pip 旧版本(我不确定那是什么版本)时,我的 app.py 运行良好。但是每当我执行 pip install
- 烧瓶
- Flask-RESTful
- Flask-JWT
但是我看到我的烧瓶和其他软件包都有最新版本,所以我尝试在新的虚拟环境中运行我的应用程序,但它一直失败。我将在步骤下方添加失败消息和其他一些信息。
(base) Apples-MacBook-Pro:pythonEnvs testuser$ virtualenv -p python3.9 venvTest
(base) Apples-MacBook-Pro:pythonEnvs testuser$ cd ../Documents/Personal/FlaskProject/src/Flask-Api/
(base) Apples-MacBook-Pro:Flask-Api testuser$ source ~/pythonEnvs/venvTest/bin/activate
(venvTest) (base) Apples-MacBook-Pro:Flask-Api testuser$ pip --version
pip 21.1.1 from /Users/testuser/pythonEnvs/venvTest/lib/python3.9/site-packages/pip (python 3.9)
(venvTest) (base) Apples-MacBook-Pro:Flask-Api testuser$ python --version
Python 3.9.5
(venvTest) (base) Apples-MacBook-Pro:Flask-Api testuser$ pip install flask
(venvTest) (base) Apples-MacBook-Pro:Flask-Api testuser$ pip install Flask-RESTful
(venvTest) (base) Apples-MacBook-Pro:Flask-Api testuser$ pip install Flask-JWT
(venvTest) (base) Apples-MacBook-Pro:Flask-Api testuser$ python3.9 app.py
Traceback (most recent call last):
File "/Users/testuser/Documents/githubProjects/FlaskProject/src/Flask-Api/app.py", line 2, in <module>
from flask_restful import Api
File "/Users/testuser/pythonEnvs/venvTest/lib/python3.9/site-packages/flask_restful/__init__.py", line 14, in <module>
from flask.helpers import _endpoint_from_view_func
ImportError: cannot import name '_endpoint_from_view_func' from 'flask.helpers' (/Users/testuser/pythonEnvs/venvTest/lib/python3.9/site-packages/flask/helpers.py)
我很幸运能够从较旧的 pip 版本中冻结 pip,因此我将其粘贴到 requirements.txt 并对其进行显式 pip 安装,现在正在其上运行应用程序。但是新的 Flask 和其他依赖版本到底有什么问题。
以下是旧 pip 中 pip freeze 的结果,以及在新虚拟环境中升级和安装库后的结果:-
# Pip Freeze from an older version
aniso8601==9.0.1
click==7.1.2
Flask==1.1.2
Flask-JWT==0.3.2
Flask-RESTful==0.3.8
itsdangerous==1.1.0
Jinja2==2.11.3
MarkupSafe==1.1.1
PyJWT==1.4.2
pytz==2021.1
six==1.16.0
# Pip Freeze from the new version ( pip 21.1.1 )
aniso8601==9.0.1
click==8.0.0
Flask==2.0.0
Flask-JWT==0.3.2
Flask-RESTful==0.3.8
itsdangerous==2.0.0
Jinja2==3.0.0
MarkupSafe==2.0.0
PyJWT==1.4.2
pytz==2021.1
six==1.16.0
Werkzeug==2.0.0
下面是我正在尝试运行的 app.py:-
from flask import Flask
from flask_restful import Api
from flask_jwt import JWT
from security import authenticate, identity
from resources.user import UserRegister
from resources.item import Item, ItemList
# Resources are something our API is concerned with ( let it be students, items etc)
app = Flask(__name__)
app.secret_key = 'flask_application'
api = Api(app)
jwt = JWT(app, authenticate, identity) # JWT creates a new endpoint /auth
api.add_resource(Item, '/item/<string:name>')
api.add_resource(ItemList, '/items')
api.add_resource(UserRegister, '/register')
if __name__ == "__main__":
app.run(port=5000, debug = True) # To debug use (debug = True)
如有任何需要,请在 cmets 中告诉我。
( Authenticate 和 identity 是用于对我们数据库中的用户进行身份验证的函数 UserRegister、Item 和 ItemList 是具有相应端点所需的一些预定义属性的类)
对此的任何见解都会有很大帮助。
谢谢
【问题讨论】:
-
感谢您抽出宝贵时间提供所有必要信息!
标签: python-3.x flask pip