【问题标题】:Use ipdb with webapp2将 ipdb 与 webapp2 一起使用
【发布时间】:2016-11-07 06:49:23
【问题描述】:

我是 django 开发人员,最近开始使用 webapp2 项目。我的问题是如何像在 django 和 flask 中一样使用 ipdb 包在 webapp2 应用程序中进入调试模式。

我的应用结构:

helloapp
    - libs/
    - stylesheets/
    - templates/
    - .gitignore
    - app.yaml
    - index.yaml
    - main.py
    - webapp2.py

我已经使用

在 libs 文件夹中安装了 ipdb

sudo pip install -t github_projects/hellowebapp2/libs ipdb

main.py

from .libs import ipdb
class HelloWebapp2(webapp2.RedirectHandler):
    def get(self):
        import ipdb; ipdb.set_trace()

错误

/home/kishan/github_projects/hellowebapp2/main.py
ERROR    2016-11-07 06:48:01,566 wsgi.py:263] 
Traceback (most recent call last):
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/home/kishan/github_projects/hellowebapp2/main.py", line 12, in <module>
from .libs import ipdb
ValueError: Attempted relative import in non-package

更新

我关注了这个link 现在我得到了不同的错误ImportError: No module named termios :(

【问题讨论】:

  • helloapp 不是 python 包。它需要有__init__.py
  • 嗨,我试过了,还是不行。我也尝试制作 libs 文件夹 python 包。然后from .libs import ipdb 然后我得到另一个错误ImportError: No module named ipdb.__main__
  • 你安装了ipdb吗? pip install ipdb
  • 是的,正如我在问题中所说的那样。

标签: python django webapp2


【解决方案1】:

建议您使用virtualenvironments。使用 pip 安装virtualenvwrapper

pip install virtualenvwrapper

然后打开您的 bashrc 并插入 virtualenvwrapper docs 中提到的相关行。然后创建一个虚拟环境。

mkvirtualenv myapp

将包括 webapp2 在内的所有 python 包安装到您的虚拟环境中。

pip install webapp2
pip install webob
pip install paste
pip install ipdb

这样,您的所有软件包都将位于一个位置 (/home/username/.virtualenvs/myapp)

而且您可以导入任何您想要的已安装包,而不会因相对导入而头疼。对于缺少的termios,您可以查看SO Post

【讨论】:

  • 不工作。来自 django 背景,这是我尝试过的第一件事。但是 webapp2 不知道 virtualenv 的路径,根据我的理解,它需要您的应用程序文件夹中的所有第三方包。
  • 我只是按照这里的教程https://media.readthedocs.org/pdf/webapp2/latest/webapp2.pdf#subsection.9.17.4。使用 virtualenvs 设置 webapp2,在浏览器中我得到你好 webapp2!作为 httpresponse 以及我在导入和使用 ipdb.set_trace() 时被放入 ipdb shell。此外,它不是关于第三个包,而是关于 pypi 包。 whatever you install in your virtual environment is handled by python rather than the framework you use。 HTH :)
  • 谢谢,但您提供的链接返回 404 错误页面不存在。检查更新的问题。
  • 再次发布链接。因为我也得到了 404。但重新加载后它工作正常。 https://media.readthedocs.org/pdf/webapp2/latest/webapp2.pdf#subsection.9.17.4 。如果您仍然无法访问该链接,请尝试使用wget https://media.readthedocs.org/pdf/webapp2/latest/webapp2.pdf 下载 pdf。这肯定会起作用:)
  • 谢谢,但它只是展示了如何创建我知道的 virtualenv。问题是 ipdb 不工作。但是我尝试了 pdb 并且 pdb 工作得很好,但是 ipdb 比 pdb 好得多,所以需要让它工作。
猜你喜欢
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
相关资源
最近更新 更多