升级pip后出错:无法导入名称“main”

  • 问题:
  • 每当我尝试使用pip安装任何软件包时,都会遇到以下导入错误:

    guru@guru-notebook:~$ pip3 install numpy
    Traceback (most recent call last):
    File "/usr/bin/pip3", line 9, in <module>
    from pip import main
    ImportError: cannot import name 'main'

    guru@guru-notebook:~$ cat `which pip3`
    #!/usr/bin/python3
    # GENERATED BY DEBIAN

    import sys

    # Run the main entry point, similarly to how setuptools does it, but because
    # we didn't install the actual entry point from setup.py, don't use the
    # pkg_resources API.
    from pip import main
    if __name__ == '__main__':
    sys.exit(main())

    它以前工作得很好,我不知道它为什么抛出这个错误。

    如果你需要更多的细节,请告诉我,我会更新我的问题

  • 答案:
  • 您一定是无意中升级了系统pip(可能是通过sudopip install pip--upgrade

    pip10.x调整其内部构件的位置。您看到的pip3命令是由您的包维护人员提供的(可能是基于debian的吗?)不是由pip管理的文件

    你可以在上面读到更多的信息pip’s issue tracker

    您可能希望而不是升级您的系统pip,而是使用virtualenv

    要恢复pip3二进制文件,您需要sudo python3-m pip uninstall pip&sudo apt install python3 pip--reinstall

    如果您想继续在“不受支持的区域”(在系统包管理器之外升级系统包),您可能可以使用python3-m pip…而不是pip3