python - 为什么 Django 不使用 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 不会产生差异。

时间:

尝试将它的安装到 virtualenv ! :- )

我喜欢 iPython,但不喜欢在所有的virtualenvs中安装它,我已经找到了一个好的解决方案来支持它。 你可以直接使用系统 iPython,而不用使用 python manage.py shell

为了使这个工作正常,你需要设置DJANGO_SETTINGS_MODULE以便它与你的项目相对应。

export DJANGO_SETTINGS_MODULE=yourproject.settings

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

如果你有几个django项目,想避免改变变量每次 switch 之间的项目,你可以添加出口线以上根据每个项目的django virtualenvs postactivate脚本。 对于我来说,postactivate脚本是 ~/.virtualenvs/myvenv/bin/postactivate

在我的案例中,我真的想在多个虚拟环境( 使用默认--no-site-packages创建) 中运行 samba,每个虚拟环境。 我做不是想安装ipython每个env。

就像 @Arash 所提到的,导出 DJANGO_SETTINGS_MODULE 是很困难的,但是当你有多个项目时,它很难管理它。

我终于在两个方面解决了这个问题。

首先我添加了目录"/usr/lib/python2.7/dist-packages" 和"/usr/lib/pymodules/python2.7"to sys.path/usr/bin/ipython 脚本中如前所述

接下来,我使用 manage_to_ipython.py 脚本创建一个django-project-specific脚本调用 runipython.py 利用 manage.py 文件创建

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

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

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

...