遵循本教程:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database我已经到达了我应该创建第一个数据库并迁移它的表的部分。
在我的xyzTest应用的根目录中使用db_create.py
,其中包含以下内容:
#!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 active(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行,in 来自migrate.versioning import api ImportError:没有名为'migrate'的模块
然而,安装了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)
答案 0 :(得分:3)
搜索以查找^M
的含义,我遇到了这篇文章Unix script appends ^M at end of each line
我已应用与所选答案相同的解决方案dos2unix db_create.py
并修复了它。
之所以发生这种情况,是因为我正在从一台Windows机器写入一个文件夹linux文件夹。我执行了以下命令:find ./ -name "*.py" -not -path "./flask/*" -exec dos2unix {} \;
以确保我不会遇到与其他任何文件相同的问题。
答案 1 :(得分:0)
sqlalchemy-migrate版本可能存在问题。本教程使用sqlalchemy-migrate v.07.2(请参阅您在问题中发布的教程链接的评论部分)。本教程中sqlalchemy的版本也较旧(来自作者“你应该使用sqlalchemy 0.7.9与sqlalchemy-migrate。该项目未更新为使用sqlalchemy 0.8。”)