Flask 糟糕的解释器
Flask bad interpreter
遵循本教程: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 (virtualenv flask; source flask/bin/activate
) 的情况下执行脚本,脚本的执行结果都是相同的。
./db_create.py
returns:
-bash: ./db_create.py: flask/bin/python^M: bad interpreter: No such file or directory
python db_create.py
returns:
Traceback (most recent call last):
File "db_create.py", line 2, in
from migrate.versioning import api
ImportError: No module named 'migrate'
然而,flask-sqlalchemy
和 sqlalchemy-migrate
都已安装,连同 flask 框架本身。
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)
这可能是 sqlalchemy-migrate 版本的问题。本教程使用 sqlalchemy-migrate v.07.2(请参阅您在问题中发布的教程的评论部分 link)。还有教程里的sqlalchemy版本比较旧(来自作者"You should be using sqlalchemy 0.7.9 with sqlalchemy-migrate. That project was not updated to work with sqlalchemy 0.8.")
搜索^M
的意思,遇到这篇文章Unix script appends ^M at end of each line
我应用了与所选答案相同的解决方案,dos2unix db_create.py
并修复了它。
发生这种情况是因为我正在从 windows 机器写入文件夹 linux 文件夹。我执行了以下命令:find ./ -name "*.py" -not -path "./flask/*" -exec dos2unix {} \;
以确保我不会对任何其他文件有同样的问题。
遵循本教程: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 (virtualenv flask; source flask/bin/activate
) 的情况下执行脚本,脚本的执行结果都是相同的。
./db_create.py
returns:
-bash: ./db_create.py: flask/bin/python^M: bad interpreter: No such file or directory
python db_create.py
returns:
Traceback (most recent call last):
File "db_create.py", line 2, in from migrate.versioning import api ImportError: No module named 'migrate'
然而,flask-sqlalchemy
和 sqlalchemy-migrate
都已安装,连同 flask 框架本身。
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)
这可能是 sqlalchemy-migrate 版本的问题。本教程使用 sqlalchemy-migrate v.07.2(请参阅您在问题中发布的教程的评论部分 link)。还有教程里的sqlalchemy版本比较旧(来自作者"You should be using sqlalchemy 0.7.9 with sqlalchemy-migrate. That project was not updated to work with sqlalchemy 0.8.")
搜索^M
的意思,遇到这篇文章Unix script appends ^M at end of each line
我应用了与所选答案相同的解决方案,dos2unix db_create.py
并修复了它。
发生这种情况是因为我正在从 windows 机器写入文件夹 linux 文件夹。我执行了以下命令:find ./ -name "*.py" -not -path "./flask/*" -exec dos2unix {} \;
以确保我不会对任何其他文件有同样的问题。