为什么Django不会使用IPython?

时间:2013-01-31 01:05:29

标签: python django virtualenv ipython

(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不会产生任何影响。

3 个答案:

答案 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

相关问题