0

前言

我在系统范围内安装了运行良好的 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

编辑

当我按照 Monir 的建议替换新/usr/bin/ipython文件的第一行时,出现此错误:#!/usr/bin/python

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
4

1 回答 1

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,因此可以访问必要的系统范围的包而不是虚拟环境 python。在您的 virtualenv 之外的目录上运行“which python”,并将该路径放在 sha-bang 之后的第一行。(很可能是 /usr/bin/pyhton)

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

如果一切都失败了,请尝试在系统级别重新安装 ipython。不确定您是否已经尝试过。

于 2012-12-13T00:26:29.443 回答