为什么我不能用ipython访问Django shell中的导入函数?

时间:2022-11-26 05:54:43

I have installed ipython in my virtualenv, so python manage.py shell gives my ipython. However, I can't access imports from inside function definitions:

我已经在我的virtualenv中安装了ipython,所以python manage.py shell给了我的ipython。但是,我无法从函数定义内部访问导入:

$ python manage.py shell
Python 2.7.5 (default, Sep  6 2013, 09:55:21) 
Type "copyright", "credits" or "license" for more information.

IPython 1.1.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]: from re import search

In [2]: def my_search(pattern, string):
    return search(pattern, string)
   ...: 

In [3]: my_search('x', 'y')
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/home/wilfred/.envs/drawbridge/lib/python2.7/site-packages/django/core/management/commands/shell.pyc in <module>()
----> 1 my_search('x', 'y')

/home/wilfred/.envs/drawbridge/lib/python2.7/site-packages/django/core/management/commands/shell.pyc in my_search(pattern, string)
      1 def my_search(pattern, string):
----> 2     return search(pattern, string)
      3 

NameError: global name 'search' is not defined

This works fine if I start ipython directly. Why doesn't it work from the Django shell?

如果我直接启动ipython,这可以正常工作。为什么它不能用于Django shell?

1 个解决方案

#1


6  

This is a known bug that was fixed in django 1.6. There are also some workarounds for earlier versions suggested in the issue discussion, take a look.

这是一个已知的错误,已在django 1.6中修复。对于在问题讨论中建议的早期版本,还有一些解决方法,请看一下。

Also see:

#1


6  

This is a known bug that was fixed in django 1.6. There are also some workarounds for earlier versions suggested in the issue discussion, take a look.

这是一个已知的错误,已在django 1.6中修复。对于在问题讨论中建议的早期版本,还有一些解决方法,请看一下。

Also see: