当前位置: 首页 > 知识库问答 >
问题:

升级到Python版本2.7.12的pip 10.0.0后,“重要错误:无法导入名称主”-只安装了一个Python版本

乐正瑞
2023-03-14

安装软件时,我在终端上收到一条消息:您正在使用pip 8.1版。1,但版本为10.0。0可用。您应该考虑通过“PIP安装-升级PIP”命令升级。<代码>

所以我升级了pip版本:$pip安装——升级pip

现在我得到这个错误:

~$ pip install ipython
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

共有3个答案

吴胜涝
2023-03-14

尝试升级系统pip

安装升级pip

pip安装--升级pip

这可能有用

晋安国
2023-03-14

我从ImportError执行了@catalinpopescu响应:在windows7 32位运行pip--version命令时无法导入名称main

查找pip的路径:

$ which pip

修改文件(选择您喜爱的编辑器):

$ sudo nano `which pip`

然后在catalinpopescu处修改行:注释/替换行:

from pip import main
sys.exit(main())

到:

from pip import __main__
sys.exit(__main__._main())

我立即升级到Pip版本10.0.1,它似乎没有这个错误。

卢骏俊
2023-03-14

>

如果您仍想独家使用新的pip 10,有3种快速解决方法:

  • 只需重新打开一个新的bash会话(一个新的终端选项卡,或者键入bash)-然后pip 10变得可用(参见pip-V)。debian的pip 8仍然安装,但已损坏;或者
  • $hash-d pip

注意:除非您是在virtualenv中,否则您将始终需要向非debian提供的PIP10添加--user标志!Ubuntu/Debian并不真正支持在virtualenv之外的系统范围内使用PIP10。永远不要sudo-pip

详细信息:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100

Ubuntu 16.04和Python 2.7。12

引言:
具有讽刺意味的是,尽管pip本身建议通过终端中明确的pip安装-升级pip命令进行这样的升级(ugh!),但不建议在预打包的GNU/Linux发行版中升级它。Ubuntu通常期望使用APT包管理器进行任何系统范围内的Python模块更新/安装(包括pip本身),例如:
$sudo apt-get更新(来自源的resync Ubuntu包索引文件)
$apt-ache搜索

重要错误:无法导入名称main
错误是由pip安装-升级pip命令引起的:该命令将最新的pip版本10安装在Ubuntu的默认pip版本旁边,来自操作系统发行版(系统)的python-pip debian包Python安装),完全绕过Ubuntuapt子系统。它打破了Ubuntu的默认pip:来自python-pip(系统安装到 /usr/bin/pip*)的debian补丁启动器脚本试图从新安装的pip10库导入main(),但导入路径不同,因此失败。

这个错误将在pip问题跟踪器的开发人员线程中更详细地讨论,包括一些建议的解决方案,例如:

>

  • $hash-d pip命令:当调用hash时,通过搜索$PATH中的目录并记住pip的完整路径名。丢弃任何以前记住的路径名。-d选项导致shell忘记给定包名的记住位置;或者

    类似地,您可以简单地重新打开一个新的bash会话(一个新的终端选项卡)来刷新$PATH中的pip路径名;或者

    您可以使用pip 2命令(或Python 3的pip)而不是pip来调用较旧的系统安装的pip脚本/usr/bin/pip 2,而任何位于中的pip启动器脚本$HOME/. loc/bindir(pip, pip 2, pip 2.7)将启动用户安装的新pip 10版本;

    您还可以将版本化的Python命令与-m开关结合使用来运行适当的pip副本,例如:
    $python2-m pip install--user SomePackage#default python2
    $python2。7-m pip安装——如果您有多个Python版本,并且需要PyPI为特定Python版本提供扩展,那么使用SomePackage#特别是Python2.7
    非常方便。只有在virtualenv之外使用pip时,才需要使用--user开关。

    或者,卸载两个pip中的一个——用户安装的或系统安装的——以解决冲突:
    $python-m pip uninstall pip——删除手动安装的pip,以支持先前安装的python pip debian包中的Ubuntu附带版本(python3 pip for python3);它稍微旧一点,但是它可以从PyPI中找到并安装最新的模块,并且默认情况下在$PATH中有一个正常工作的pip命令;或者
    $sudo apt get remove python pip–卸载Ubuntu提供的pip,以支持最新的pip 10;如果无法通过shortpip命令访问,只需添加$HOME/。本地/bin目录到$PATH环境变量,以使用pip命令(见上文)<注:Ubuntu 16.04 pip v8。1.1和最新的pip v10。0.1生成完全相同的PyPI索引搜索结果,并且可以拉取相同的模块版本;

    最后,您可以完全忽略这两个点,支持APT,并通过以下方式在Ubuntu repo系统范围内安装Python包:
    $apt search

    注意:应避免使用sudo-pip命令(具有根访问权限),因为当系统使用的python模块意外升级时,它会干扰系统包管理器(apt)的操作,并且可能会影响Ubuntu OS组件,尤其是依赖于另一个pip包。建议不要使用Pip来更改系统范围的Python包,因为这些包是由Ubuntu上的apt-get管理的。

  •  类似资料:
    • 问题内容: 每当我尝试使用pip安装任何软件包时,都会收到此导入错误: 之前它运行良好,我不确定为什么会引发此错误。我已经搜索了此错误,但找不到任何可修复的错误。 如果你需要更多详细信息,请告诉我,我将更新我的问题。 问题答案: 你必须不经意间升级了系统(可能通过) pip 10.x调整其内部位置。pip3你看到的命令是你的软件包维护者提供的(这里大概是基于debian的?),而不是pip管理的文

    • 在将 Navicat Monitor 升级到最新的主要版本(例如从 1.x 到 2.x)之前,我们建议你先备份存储库数据库,因为主要升级是不可逆的。 请按照下列步骤 Navicat Monitor: 前往“配置”。 点击“备份、升级或迁移”。 选择“升级到最新的主要版本”。 点击“下载 Monitor 设置 Zip 文件”以备份当前的 Navicat Monitor 设置。 【如果你使用订阅方案,

    • 每当我试图安装任何包使用pip,我得到这个导入错误: 早些时候它工作得很好,我不知道它为什么会抛出这个错误。我已经搜索了这个错误,但是找不到任何可以修复它的东西。 如果你需要任何进一步的细节,请告诉我,我会更新我的问题。

    • 问题内容: 我在我的Ubuntu 14.04上运行了Jenkins,并且我尝试使用normal进行jenkins的升级,但是当我尝试这样做时,我不断收到错误消息: jenkins日志中没有显示任何内容,即使重新启动jenkins时,我仍然遇到相同的jave错误版本错误, 有什么帮助吗? 问题答案: 您正在使用Java 7,但Jenkins需要Java 8-请参阅:https : //jenkins

    • 我在PyCharm上的venv中有python 3.6。但是,我想将其更改为Python 3.8。我已经安装了3.8,那么如何更改我的venv python版本呢? 我在窗口 10 上。 更改项目智能设置上的版本似乎使用新的 venv 而不是我已安装的所有软件包的现有 venv 运行。尝试添加新的 intepreter 也会导致“OK”按钮灰显,可能是由于当前 venv 不为空。

    • 嗨,有人能帮我解决'重要错误:不能导入名称网址'的问题吗?我已经按照教程在这里https://docs.djangoproject.com/en/1.9/intro/tutorial01/ 我尝试了另一个教程https://docs.djangoproject.com/zh-hans/2.0/ref/urls/#django.urls.include 但是他们都不工作我的Django版本是1.11