Я следую этому сообщению , чтобы сделать одно правило ipython для всех virtualenvs.
Насколько я понимаю, основная идея поста в том, что в виртуалке ipython не может найти свои модули.
(a-virtualenv)me@pc:~$ ipython
Traceback (most recent call last):
File "/usr/bin/ipython", line 19, in
from IPython.frontend.terminal.ipapp import launch_new_instance
ImportError: No module named IPython.frontend.terminal.ipapp
Чтобы обойти это, я добавляю это в свой /usr/bin/ipython
import sys
if "/usr/lib/python2.7/dist-packages" not in sys.path:
sys.path.append("/usr/lib/python2.7/dist-packages")
Этот трюк работает на Бальтазара. Но в моем случае я получаю это
Traceback (most recent call last):
File "/usr/bin/ipython", line 18, in
from IPython.frontend.terminal.ipapp import launch_new_instance
File "/usr/lib/python2.7/dist-packages/IPython/__init__.py", line 46, in
from.frontend.terminal.embed import embed
File "/usr/lib/python2.7/dist-packages/IPython/frontend/terminal/embed.py", line 37, in
from IPython.frontend.terminal.ipapp import load_default_config
File "/usr/lib/python2.7/dist-packages/IPython/frontend/terminal/ipapp.py", line 38, in
from IPython.core.completer import IPCompleter
File "/usr/lib/python2.7/dist-packages/IPython/core/completer.py", line 84, in
from IPython.utils import generics
File "/usr/lib/python2.7/dist-packages/IPython/utils/generics.py", line 19, in
from IPython.external.simplegeneric import generic
File "/usr/lib/python2.7/dist-packages/IPython/external/simplegeneric/__init__.py", line 4, in
from _simplegeneric import *
ImportError: No module named _simplegeneric
Я подумал, может быть, мне следует добавить /usr/lib/python2.7/dist-packages/IPython/external
к sys.path
в /usr/bin/ipython
. Я получаю
Traceback (most recent call last):
File "/usr/bin/ipython", line 18, in
from IPython.frontend.terminal.ipapp import launch_new_instance
File "/usr/lib/python2.7/dist-packages/IPython/__init__.py", line 43, in
from.config.loader import Config
File "/usr/lib/python2.7/dist-packages/IPython/config/loader.py", line 27, in
from IPython.utils.path import filefind, get_ipython_dir
File "/usr/lib/python2.7/dist-packages/IPython/utils/path.py", line 24, in
from IPython.utils.process import system
File "/usr/lib/python2.7/dist-packages/IPython/utils/process.py", line 27, in
from._process_posix import _find_cmd, system, getoutput, arg_split
File "/usr/lib/python2.7/dist-packages/IPython/utils/_process_posix.py", line 27, in
from IPython.utils import text
File "/usr/lib/python2.7/dist-packages/IPython/utils/text.py", line 27, in
from IPython.external.path import path
ImportError: cannot import name path
Эта ошибка возникла в строке 43 документа IPython/__init__py
, а предыдущая — в строке 46.
Как я могу заставить ipython работать с virtualenv?
Как добавление /usr/lib/python2.7/dist-packages/IPython/external
к sys.path
может привести к новой ошибке?
Что мне следует прочитать, чтобы лучше понять путь импорта python?
Спасибо!
PS :обычный IPython sys.path
['',
'/usr/bin',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gst-0.10',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-control-panel',
'/usr/lib/python2.7/dist-packages/ubuntuone-couch',
'/usr/lib/python2.7/dist-packages/ubuntuone-installer',
'/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol',
'/usr/lib/python2.7/dist-packages/IPython/extensions']