(myvenv)me:src orokusaki$ python manage.py shell -i ipython
Python 2.7.2 (default, Jun 16 2012, 12:38:40)
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> while True:
... pass # :(
...
我已经全局安装了IPython,并且在myvenv
virtualenv被激活时它可以正常工作。但是,如果我启动Django shell(有或没有-i
),它将不会使用IPython。我以前从未遇到过这个问题。
注意:django-admin.py
vs manage.py
不会产生任何影响。
答案 0 :(得分:46)
尝试将其安装到virtualenv中! : - )
答案 1 :(得分:14)
我喜欢iPython,但不喜欢在我所有的virtualenvs中安装它,而且我找到了一个很好的解决方案来实现这一点。您可以直接使用系统iPython而不是python manage.py shell
。
为了使其正常工作,您需要设置DJANGO_SETTINGS_MODULE,使其与您的项目相对应。
export DJANGO_SETTINGS_MODULE=yourproject.settings
如果这是您唯一的Django项目,最简单的解决方案是将该行添加到.bashrc
。
如果你有几个Django项目,并希望避免每次在项目之间切换时都要更改变量,你可以将上面为每个项目定制的导出行添加到所有Django virtualenvs的postactivate脚本中。对我来说,postactivate脚本位于~/.virtualenvs/myvenv/bin/postactivate
。
答案 2 :(得分:1)
就我而言,我真的想在多个虚拟环境中运行IPython(使用默认的--no-site-packages创建),每个环境都用于不同的Django项目。我做了不想在每个环境中安装IPython。
正如@Arash所提到的,导出DJANGO_SETTINGS_MODULE
有效,但是当你有多个项目时很难管理它。
我终于分两部分解决了这个问题。
首先我添加了目录" /usr/lib/python2.7/dist-packages"和" /usr/lib/pymodules/python2.7"到/ usr / bin / ipython脚本中的sys.path,如上所述here。
接下来,我使用manage_to_ipython.py
脚本创建一个名为runipython.py
的django项目特定脚本,利用django-admin.py创建的manage.py
文件
在每个Django项目中,$cd <project_dir>
然后运行python manage_to_ipython.py
现在,要运行IPython,只需输入./runipython.py
可以找到修改后的/ usr / bin / ipython和manage_to_ipython.py脚本here。