遵循本教程:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database,我已经到达了我应该创建第一个db并迁移它的表的部分。
拥有db_create.py,在我的xyzTest应用程序的根目录中,具有以下内容:
#!flask/bin/python
from migrate.versioning import api
from config import SQLALCHEMY_DATABASE_URI
from config import SQLALCHEMY_MIGRATE_REPO
from app import db
import os.path
db.create_all()
if not os.path.exists(SQLALCHEMY_MIGRATE_REPO):
api.create(SQLALCHEMY_MIGRATE_REPO, 'database repository')
api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
else:
api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO,
api.version(SQLALCHEMY_MIGRATE_REPO))无论我是否使用virtualenv (virtualenv flask; source flask/bin/activate)执行脚本,脚本的执行结果都是相同的。
./db_create.py返回:
-bash:./db_create.py: flask/bin/python^M:糟糕的解释器:没有这样的文件或目录
python db_create.py返回:
回溯(最近一次调用): 文件"db_create.py",第2行,从migrate.versioning导入api ImportError:没有模块名为‘迁移’
然而,flask-sqlalchemy和sqlalchemy-migrate以及自己的烧瓶框架都已经安装好了。
ppip list
argparse (1.2.1)
Babel (1.3)
blinker (1.3)
coverage (3.7.1)
decorator (3.4.2)
Flask (0.10.1)
Flask-Babel (0.9)
Flask-Login (0.2.11)
Flask-Mail (0.9.1)
Flask-OpenID (1.2.4)
Flask-SQLAlchemy (2.0)
Flask-WhooshAlchemy (0.56)
Flask-WTF (0.11)
flipflop (1.0)
guess-language (0.2)
itsdangerous (0.24)
Jinja2 (2.7.3)
MarkupSafe (0.23)
pbr (0.11.0)
pip (1.5.6)
python-openid (2.2.5)
pytz (2015.4)
setuptools (5.5.1)
six (1.9.0)
speaklater (1.3)
SQLAlchemy (0.9.9)
sqlalchemy-migrate (0.9.6)
sqlparse (0.1.15)
Tempita (0.5.2)
Werkzeug (0.10.4)
Whoosh (2.7.0)
wsgiref (0.1.2)
WTForms (2.0.2)发布于 2015-06-12 13:33:46
为了找到^M的意义,我遇到了这篇文章Unix script appends ^M at end of each line
我使用了与所选答案相同的解决方案,dos2unix db_create.py并修复了它。
之所以发生这种情况,是因为我正在从windows机器写入文件夹linux文件夹。我执行了以下命令:find ./ -name "*.py" -not -path "./flask/*" -exec dos2unix {} \;,以确保不会出现与任何其他文件相同的问题。
发布于 2015-06-12 12:23:16
这可能是sqlalchemy迁移版本的一个问题。本教程正在使用sqlalchemy v.07.2 (请参阅您在问题中发布的教程链接的注释部分)。此外,本教程中sqlalchemy的版本也较旧(作者“您应该使用sqlalchemy 0.7.9和sqlalchemy -迁移。该项目没有更新为使用sqlalchemy 0.8”)。
https://stackoverflow.com/questions/30801143
复制相似问题