从虚拟环境运行 ipython 时,在“导入错误:没有名为 Shell 的模块”之后酸性删除了“/usr/bin/ipy



前言

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

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

当前问题

不幸的是,我不小心删除了/usr/bin中的ipython文件。因此,从虚拟环境内部或外部调用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 安装会重新安装这些文件吗?(我有我的疑问/usr/bin,因为我重新安装了它,它没有添加已删除的ipython文件。

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

额外信息

我正在使用 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

-- 作为关闭此 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 之外的目录上运行"哪个 python",并将该路径放在 sha-bang 之后的第一行。(很可能是/usr/bin/pyhton)

-

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

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

相关内容

最新更新