在从虚拟环境运行ipython时,在`ImportError:没有名为Shell的模块'之后意外删除`/ usr / bin / ipython`

时间:2012-12-12 17:57:17

标签: installation ipython

前言

我有一个系统范围的Ipython安装工作正常。但是,当我在虚拟环境中工作并且必须在那里安装ipython时,从那里运行它会产生以下错误:

File "/usr/bin/ipython", line 26, in <module>
    import IPython.Shell
ImportError: No module named Shell

当前问题

不幸的是,我意外删除了ipython中的/usr/bin文件。因此,从虚拟环境内部或外部调用ipython现在会出现此错误:

bash: /usr/bin/ipython: No such file or directory

以下与ipython相关的文件目前位于/usr/bin

/usr/bin$ find ipython*
ipython2.6
ipython2.7
ipython-wx
ipythonx

如果删除所有这些文件,全新的系统范围的ipython安装会重新安装这些文件吗? (自从我重新安装它后,我有疑虑,并且未在ipython中添加已删除的/usr/bin文件。

我该怎么做才能解决这个问题?

额外信息

我正在使用python2.7

修改

当我将新/usr/bin/ipython文件的第一行替换为#!/usr/bin/python时,Monir建议我收到此错误:

Traceback (most recent call last):
  File "/usr/bin/ipython", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2676, in <module>
    parse_requirements(__requires__), Environment()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 552, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: ipython==0.13.1

1 个答案:

答案 0 :(得分:1)

- 作为回答关闭此qn -

尝试在虚拟环境中搜索ipython可执行文件并将其复制到/ usr / bin。如果系统范围的ipython版本与虚拟环境中安装的版本相同,则应该可以使用。

根据要求,我正在粘贴我的/ us / bin / ipython:

#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'ipython==0.13.1','console_scripts','ipython'
__requires__ = 'ipython==0.13.1'
import sys
from pkg_resources import load_entry_point

sys.exit(
   load_entry_point('ipython==0.13.1', 'console_scripts', 'ipython')()
)

这指向系统python,因此可以访问必要的系统范围的包而不是虚拟的env python。在virtualenv之外的目录上运行“which python”,并将该路径放在sha-bang之后的第一行。 (最有可能是/ usr / bin / pyhton)

- 更新:粘贴最近评论的部分以接受此答案并关闭qn。

如果所有其他方法都失败了,请尝试在系统级重新安装ipython。不确定你是否已经尝试过这个问题。