21
(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,它在这个myvenvvirtualenv 被激活时工作得很好。但是,如果我启动 Django shell(带或不带-i),它将不会使用 IPython。我以前从来没有遇到过这个问题。

注意:django-admin.pyvsmanage.py不会有所作为。

4

3 回答 3

48

尝试将其安装到 virtualenv 中!:-)

于 2013-01-31T01:31:14.990 回答
16

我喜欢 iPython,但不喜欢在我所有的 virtualenvs 中安装它,我找到了一个很好的解决方案来实现这一点。python manage.py shell您可以直接使用系统 iPython而不是使用。

为了使其正常工作,您需要设置 DJANGO_SETTINGS_MODULE 使其与您的项目相对应。

export DJANGO_SETTINGS_MODULE=yourproject.settings

如果这是您唯一的 Django 项目,最简单的解决方案是将该行添加到您的.bashrc.

如果您有多个 Django 项目,并且希望避免每次在项目之间切换时都必须更改变量,则可以将上面为每个项目定制的导出行添加到所有 Django virtualenvs 的 postactivate 脚本中。对我来说,后激活脚本位于~/.virtualenvs/myvenv/bin/postactivate.

于 2013-11-18T08:27:33.490 回答
2

就我而言,我真的想在多个虚拟环境(使用默认的 --no-site-packages 创建)中运行 IPython,每个环境都用于不同的 Django 项目。我 不想在每个环境中安装 IPython。

正如@Arash 提到的,导出DJANGO_SETTINGS_MODULE作品但是当您有多个项目时很难管理它。

我终于分两部分解决了这个问题。

首先,我将目录“/usr/lib/python2.7/dist-packages”和“/usr/lib/pymodules/python2.7”添加到 /usr/bin/ipython 脚本中的 sys.path 中,如此处所述

接下来,我使用一个manage_to_ipython.py脚本来创建一个特定于 django-project 的脚本,称为runipython.py利用manage.pydjango-admin.py 创建的文件

在每个 Django 项目中一次,$cd <project_dir>然后运行python manage_to_ipython.py

现在,要运行 IPython,只需键入./runipython.py

修改后的 /usr/bin/ipython 和 manage_to_ipython.py 脚本可以在这里找到。

于 2014-08-06T06:59:47.270 回答