python中import sys,一般来说IPython导入失败和python sys.path

I'm following this post to make one ipython rule all the virtualenvs.

From what I understand, the main idea of the post is that when in a virtualenv, ipython can not find its modules.

(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

To work around this, I add this to my /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")

This trick works for Balthazar. But in my case, I get this

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

I thought maybe I should add /usr/lib/python2.7/dist-packages/IPython/external to sys.path in /usr/bin/ipython as well. What I get is

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

This error occurred on line 43 of IPython/__init__py, but the previous one occurred on line 46.

How can I make ipython work with virtualenv?

How can adding /usr/lib/python2.7/dist-packages/IPython/external to sys.path resulting a new error?

What should I read to get a better understanding of python import path?

Thanks!

PS:

normal 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']

解决方案

IPython seems to work now!

Because ipython can not find simplegeneric. I tried to locate simplegeneric and found simplegeneric is in '/usr/lib/pymodules/python2.7'. After '/usr/lib/pymodules/python2.7' being added, ipython works fine.

Jeff Tratner's comment really helps!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值