Flask(flask db init):属性错误:模块'time'没有属性'clock'



在学习Flask教程时,我偶然发现了这个非常奇怪的问题!在设置Migrate目录时,在使用set FLASK_APP=sql1.py设置烧瓶应用程序的第一步之后,当我运行此命令flask db init时,我得到了以下错误:

(first_flask_env) C:UsersaakashDesktoppython programs>flask db init
Traceback (most recent call last):
File "c:usersaakashanaconda3envsfirst_flask_envlibrunpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:usersaakashanaconda3envsfirst_flask_envlibrunpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:UsersaakashAnaconda3envsfirst_flask_envScriptsflask.exe__main__.py", line 7, in <module>
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesflaskcli.py", line 894, in main
cli.main(args=args, prog_name=name)
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesflaskcli.py", line 557, in main
return super(FlaskGroup, self).main(*args, **kwargs)
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesclickcore.py", line 697, in main
rv = self.invoke(ctx)
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesclickcore.py", line 1061, in invoke
cmd_name, cmd, args = self.resolve_command(ctx, args)
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesclickcore.py", line 1100, in resolve_command
cmd = self.get_command(ctx, cmd_name)
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesflaskcli.py", line 500, in get_command
self._load_plugin_commands()
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesflaskcli.py", line 496, in _load_plugin_commands
self.add_command(ep.load(), ep.name)
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagespkg_resources__init__.py", line 2472, in load
return self.resolve()
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagespkg_resources__init__.py", line 2478, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesflask_migrate__init__.py", line 8, in <module>
from alembic import __version__ as __alembic_version__
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesalembic__init__.py", line 8, in <module>
from . import op  # noqa
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesalembicop.py", line 1, in <module>
from .operations.base import Operations
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesalembicoperations__init__.py", line 1, in <module>
from .base import Operations, BatchOperations
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesalembicoperationsbase.py", line 3, in <module>
from .. import util
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesalembicutil__init__.py", line 6, in <module>
from .pyfiles import (  # noqa
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesalembicutilpyfiles.py", line 6, in <module>
from mako.template import Template
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesmakotemplate.py", line 10, in <module>
from mako.lexer import Lexer
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesmakolexer.py", line 11, in <module>
from mako import parsetree, exceptions, compat
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesmakoparsetree.py", line 9, in <module>
from mako import exceptions, ast, util, filters, compat
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesmakoexceptions.py", line 11, in <module>
from mako import util, compat
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesmakoutil.py", line 11, in <module>
from mako import compat
File "c:usersaakashanaconda3envsfirst_flask_envlibsite-packagesmakocompat.py", line 124, in <module>
time_func = time.clock
AttributeError: module 'time' has no attribute 'clock'

我在运行.py脚本时也遇到了完全相同的错误,下面是脚本:

from flask import Flask
import os
from flask_sqlalchemy import SQLAlchemy 
from flask_migrate import Migrate
basedir = os.path.abspath(os.path.dirname(__file__))   #Full directory path of the file I'm working with..here, sql1.py
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 
db = SQLAlchemy(app)
Migrate(app,db) #Here it connect the application "app.py"
# with the database "db"    
class puppy(db.Model):
__tablename__ = 'Name Provided by me!!'
id = db.Column(db.Integer,primary_key = True)
name = db.Column(db.Text)
age = db.Column(db.Integer)

def __init__(self,name,age):
self.name = name
self.age = age
def __repr__(self):
return f"puppy {self.name} is {self.age} year/s old!"

我研究了我找到的每一个解决方案(这里和这个(,并确保一切都是正确的!当我的环境被激活时,我运行了这个命令,它已经安装了所需的所有包,包括SQLAlchemy和Flask Migrate

我甚至删除了它们(包(,重新安装了它们的最新版本,但仍然出现了同样的错误!我使用Python 3.8.5

您有一些依赖项太旧,与Python 3.8不兼容。至少,您应该更新mako包:

pip install --upgrade mako

我遇到了类似的问题,我不得不更新flask_sqlalchemy,即使在更新之后我也遇到了问题。我最终不得不制作一个新的虚拟环境,我会在另一个虚拟环境上制作一个小的hello world项目,看看它是否有效。

对我来说,它给出了相同的错误,所以我从具有app.py的文件夹中删除了__init__.py文件

删除后,我运行

flask init db

它起作用了:(

最新更新