V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
bmos
V2EX  ›  Python

基于 Python 的 Web 应用开发实战中 Python hello.py shell 无法进入 shell 的问题

  •  
  •   bmos · 2018-09-07 15:59:02 +08:00 · 2343 次点击
    这是一个创建于 2303 天前的主题,其中的信息可能已经有所发展或是发生改变。
    怎么搜都没找到解决方案。按照 python hello.py shell 运行,没有进入 shell 环境,有没有同样掉进过坑里的筒子解答一下?系统是 windows
    7 条回复    2019-12-22 14:58:38 +08:00
    d0m2o08
        1
    d0m2o08  
       2018-09-07 16:06:10 +08:00   ❤️ 1
    大哥你连个报错信息都不发,让我们猜?
    bmos
        2
    bmos  
    OP
       2018-09-07 16:11:20 +08:00
    @d0m2o08 怪我疏忽,问题就是没有任何信息输出。
    chenstack
        3
    chenstack  
       2018-09-07 17:31:59 +08:00   ❤️ 1
    大概搜了一下书名,找到的是关于 flask 的书,相关片段:
    示例 5-7 hello.py:为 shell 命令添加一个上下文
    from flask.ext.script import Shell
    def make_shell_context():
    return dict(app=app, db=db, User=User, Role=Role)

    manager.add_command("shell", Shell(make_context=make_shell_context))

    make_shell_context() 函数注册了程序、数据库实例以及模型,因此这些对象能直接导入 shell:

    $ python hello.py shell


    根据你的描述推测是未调用 manager.run(),此书在示例 2-3 的代码中有:
    if __name__ == '__main__':
    manager.run()

    另外书中代码很多地方都是针对旧版本的 flask,推荐还是从官方的最新文档开始入门
    hubahuba
        4
    hubahuba  
       2018-09-08 01:29:07 +08:00 via Android   ❤️ 1
    @chenstack 这本书,坑看到不到一半,发现版本问题很大的障碍。
    wersonliu9527
        5
    wersonliu9527  
       2018-09-08 15:42:41 +08:00   ❤️ 1
    我猜应该是需要 set FLASK_APP=hello.py
    bmos
        6
    bmos  
    OP
       2018-09-08 21:06:22 +08:00
    @chenstack 感谢,是这个原因。
    @hubahuba 他的 github 库内容比较书本还是有更新了的。但是没想到也不能直接使用。感觉上下文联系的太强了,看书比较马大哈,一有看漏就接不上。
    @wersonliu9527 谢谢,设置 FLASK_APP 后只是可以用 flask run 运行吧。
    zigzagpigx
        7
    zigzagpigx  
       2019-12-22 14:58:38 +08:00
    百度第一条来的,新版用 pip install flask-script,导入 from flask_script import Manager,注册 manager = Manager(app),运行 if __name__ == '__main__': manager.run()。
    https://blog.csdn.net/theShepherd/article/details/86764926
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2576 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:29 · PVG 13:29 · LAX 21:29 · JFK 00:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.