前言
我有一个系统范围的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
答案 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。不确定你是否已经尝试过这个问题。