您好,我用ipython -v和python -m IPython命令,遇到ImportError,请问该怎么办?需要特别在意么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了您好,我用ipython -v和python -m IPython命令,遇到ImportError,请问该怎么办?需要特别在意么?相关的知识,希望对你有一定的参考价值。

File "/usr/lib/python2.7/runpy.py", line 163, in_run_module_as_main_mod_name,_Error)ImportError: IPython 7.0+ supports Python 3.5 and above.When using Python 2.7,please install IPytohn 5.x LTS Long Term Support version.Python 3.3 and 3.4 were supported up to IPython 6.x.

参考技术A

你这明显是ipython版本装的高了,ubuntu默认安装的python是2.7的(如果你没有安装python3的话)。

    要么你安装python3,用python3的命令时,要注意区分python和python3,前者链接的是python2.7版本,后者链接的是python3.x版本。

    要么你把现在安装的ipython卸载了,装成它提示的ipython5.x的长期支持版本,即可解决。

追问

您好,我用python --version, 以及python3 --version 都能找到版本号,请问能同时存在这两个版本么?我怕自己装的太高了。

追答

能啊。我的就是2.7与3.6并存

参考技术B 请用python --version看一下当前版本号,估计是2.7,然后apt-get install python3,再将默认系统改为python3即可。本回答被提问者采纳

将 IPython 嵌入 PyQt 应用程序的导入错误

【中文标题】将 IPython 嵌入 PyQt 应用程序的导入错误【英文标题】:Import Error embedding IPython into PyQt application 【发布时间】:2014-03-10 21:17:47 【问题描述】:

我有一个功能齐全的基于 PyQt4 的应用程序,我现在正尝试将一个 IPython 控制台嵌入其中以用作一种脚本环境。

我已经粗略地改编了IPython's Github page 中的示例以适应我的应用程序的模块系统。但是,如果 any PyQt 导入发生在 IPython 导入之前

from IPython.qt.console.rich_ipython_widget import RichIPythonWidget
from IPython.qt.inprocess import QtInProcessKernelManager

我收到以下错误:

ImportError: 
Could not load requested Qt binding. Please ensure that
PyQt4 >= 4.7 or PySide >= 1.0.3 is available,
and only one is imported per session.

Currently-imported Qt library:   'pyqtv1'
PyQt4 installed:                 True
PySide >= 1.0.3 installed:       False
Tried to load:                   ['pyside', 'pyqt']

我已将此错误追溯到 IPython's qt 模块,但本质上是强制加载“pyqtv1”(通过将 api_opts = [QT_API] 替换为 api_opts = ['pyqtv1'] 会在 IPython 窗口内中断 QString

但是,如果我这样做是为了让这些导入首先发生(通过导入此代码所在的模块,然后再导入其他任何内容),该错误就会消失,并且它基本上会用ImportError: cannot import name QString 完全破坏QString

我已经验证,如果我在包含 IPython 实例的模块中创建一个自包含的 QApplication,确保在执行 IPython 导入后导入 PyQt.QtGui,它会按预期工作。只有当我尝试将 IPython 代码与任何其他 PyQt 代码混合时才会出现问题。

关于如何修复错误的任何建议?

我使用的是 Ubuntu Linux 12.04,而 IPython 是 3 月 10 日发布的 2.0.0-dev 版本。

【问题讨论】:

您是否尝试过使用已发布的 IPython 版本之一,例如 1.2 系列? 2.0系列发生了很多变化,这可能是他们最后的一个错误。 是的,1.2 系列没有内置的“本地”功能。这就是我在开发版本上的原因。否则我会使用代码here,这实际上是 2.0 系列中的东西最初是如何产生的:p 【参考方案1】:

PyQt 为字符串提供了两种不同的 API:您可以选择使用哪一种来处理如下代码:

import sip
sip.setapi('QString', 2)
from PyQt4 import QtGui

导入 PyQt4 后,该 API 已设置且无法更改。在 Python 2 上,为了向后兼容,它默认为版本 1,但 IPython 需要 API 版本 2。版本 2 是 Python 3 上的默认值,PySide 的 API 等效于版本 2。

如果您在应用程序中使用了 v1 API,则无法使用嵌入在该应用程序中的 IPython Qt 控制台,除非将其移植到 v2 API。但是,您可以在您的应用程序中embed an IPython kernel,并在单独的进程中从 Qt 控制台连接到它。

【讨论】:

是的,我最终通过在 .bashrc 中将 QT_API 标志设置为 pyqt 并将所有对 from PyQt4.QtCore import QString 的调用包装起来来强制 v2 解决了这个问题try ... except ImportError: QString = str。这似乎使在 Python 2.7x 上运行的一切都变得愉快,尽管我实际上切换回 1.12 版本并使用与我的 OP 中链接的其他 SO 问题中的该代码的原始版本。虽然必须确保禁用 pylab,否则它会尝试 gank 我通过我的应用程序使用的所有 matplotlib 图形。

以上是关于您好,我用ipython -v和python -m IPython命令,遇到ImportError,请问该怎么办?需要特别在意么?的主要内容,如果未能解决你的问题,请参考以下文章

指定 ipython 配置文件 qtconsole

buildozer 构建 apk 但不适用于 android

您好,看到您的回答对您非常佩服,同时也有些问题想问一下,关于AIX服务器重启后PING不通也不能telnet。

Datalab 不填充 bigQuery 表

在 IPython/Jupyter Notebooks 中显示行号

启动ipython内核发生错误,在Spyder的IPython控制台中启动内核时出现PermissionError