首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ipdb正在触发ImportError

ipdb正在触发ImportError
EN

Stack Overflow用户
提问于 2016-05-16 13:03:59
回答 2查看 1.1K关注 0票数 1

当我在本地运行Django站点时,ipdb正在为我触发一个导入错误。我正在研究Python2.7,并在一个虚拟环境中工作。

which ipdb显示路径(/usr/local/bin/ipdb)which ipython也显示路径,这让我感到惊讶,因为我认为它应该显示出我的venv路径(但是如果它是全局的,它不应该工作吗?)所以我尝试了pip install --target=/path/to/venv ipdb,现在它出现在pip freeze中(以前没有),但是仍然给出了一个导入错误。

which pip给出/Users/myname/.virtualenvs/myenv/bin/pip/

我的道路:/Users/myname/.virtualenvs/myenv/bin:/Users/myname/.venvburrito/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/myname/bin:/usr/local/bin

Sys.path:'/Users/myname/Dropbox/myenv', '/Users/myname/.venvburrito/lib/python2.7/site-packages/pip-1.4.1-py2.7.egg', '/Users/myname/.venvburrito/lib/python2.7/site-packages', '/Users/myname/.venvburrito/lib/python2.7/site-packages/setuptools-8.2-py2.7.egg', '/Users/myname/.virtualenvs/myenv/lib/python27.zip', '/Users/myname/.virtualenvs/myenv/lib/python2.7', '/Users/myname/.virtualenvs/myenv/lib/python2.7/plat-darwin', '/Users/myname/.virtualenvs/myenv/lib/python2.7/plat-mac', '/Users/myname/.virtualenvs/myenv/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/myname/.virtualenvs/myenv/Extras/lib/python', '/Users/myname/.virtualenvs/myenv/lib/python2.7/lib-tk', '/Users/myname/.virtualenvs/myenv/lib/python2.7/lib-old', '/Users/myname/.virtualenvs/myenv/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/myname/.virtualenvs/myenv/lib/python2.7/site-packages']

如果我从终端运行ipdb,它可以正常工作。我试过重新启动我的终端。

堆栈跟踪:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Users/myname/.virtualenvs/myenv/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/myname/.virtualenvs/myenv/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/myname/.virtualenvs/myenv/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/myname/.virtualenvs/myenv/lib/python2.7/site-packages/django/views/generic/base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users/myname/.virtualenvs/myenv/lib/python2.7/site-packages/django/views/generic/base.py", line 157, in get
    context = self.get_context_data(**kwargs)
  File "/Users/myname/Dropbox/blog/views.py", line 22, in get_context_data
    import ipdb; ipdb.set_trace()
ImportError: No module named ipdb
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-25 12:26:04

我在用法式煎饼。删除我的venv,更新卷饼(virtualenv-burrito upgrade)并创建一个新的虚拟环境解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2016-05-24 20:36:54

我只是设置了一个虚拟env来尝试这一点,因为它必须是一个简单的修复。我设法在我的虚拟env中设置了ipdb,我将一步一步地写我所做的事情。

代码语言:javascript
复制
$ virtualenv foo
$ cd foo
$ source ./bin/activate  # activate venv

..。此时,which pythonwhich pip在虚拟env中为我提供了正确的python可执行文件。然后接下来:

代码语言:javascript
复制
(venv: foo)$ pip install ipython

此时,which ipython在虚拟env中为我提供了正确的ipython可执行文件。确保它指向正确的可执行文件是很重要的,如果它没有显示正确的可执行文件,但是全局可执行文件,则重新激活虚拟env。至关重要的是,ipython (以及您的所有可执行文件)指向虚拟服务器中的正确可执行文件。

然后我试着进口ipdb:

代码语言:javascript
复制
(venv: foo)$ ipython
In [1]: import ipdb
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-2d6f026194dd> in <module>()
----> 1 import ipdb

ImportError: No module named 'ipdb'

未找到模块,因为尚未安装。让我们开始吧:

代码语言:javascript
复制
(venv: foo)$ pip install ipdb

再试一次:

代码语言:javascript
复制
(venv: foo)$ ipython                                                                                                          [ 16-05-24 22:28 ]
Python 3.5.1 (default, Jan 29 2016, 19:58:36) 
Type "copyright", "credits" or "license" for more information.

IPython 4.2.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import ipdb

In [2]: 

好像对我有用。我使用的是zshpython3,但这不重要。您的问题很可能是它没有安装在正确的位置,这意味着使用的是全局可执行文件,而不是虚拟程序中的可执行文件。

在我的虚拟环境中,您可以看到安装了ipdb:

代码语言:javascript
复制
(venv: foo)$ find . -name ipdb
./lib/python3.5/site-packages/ipdb

我希望所有这些都能有所帮助:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37254610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档